@@ -28,7 +28,7 @@ macro_rules! attribute_groups {
2828    )  => { 
2929        type  Accepts  = BTreeMap <
3030            Symbol , 
31-             Vec < Box <dyn Send  + Sync  + Fn ( & AcceptContext <' _>,  & ArgParser <' _>) > >
31+             Box <dyn Send  + Sync  + Fn ( & AcceptContext <' _>,  & ArgParser <' _>) >
3232        >; 
3333        type  Finalizes  = Vec <
3434            Box <dyn Send  + Sync  + Fn ( & FinalizeContext <' _>)  -> Option <AttributeKind >>
@@ -43,11 +43,12 @@ macro_rules! attribute_groups {
4343                    } ; 
4444
4545                    for  ( k,  v)  in <$names>:: ATTRIBUTES  { 
46-                         accepts. entry ( * k) . or_default ( ) . push ( Box :: new( |cx,  args| { 
46+                         let  old =  accepts. insert ( * k,   Box :: new( |cx,  args| { 
4747                            STATE_OBJECT . with_borrow_mut( |s| { 
4848                                v( s,  cx,  args) 
4949                            } ) 
5050                        } ) ) ; 
51+                         assert!( old. is_none( ) ) ; 
5152                    } 
5253
5354                    finalizes. push( Box :: new( |cx| { 
@@ -268,16 +269,12 @@ impl<'sess> AttributeParser<'sess> {
268269                    let  parts = path. segments ( ) . map ( |i| i. name ) . collect :: < Vec < _ > > ( ) ; 
269270
270271                    if  let  [ part]  = & parts[ ..] 
271-                         && let  Some ( accepts )  = ATTRIBUTE_MAPPING . 0 . get ( part) 
272+                         && let  Some ( accept )  = ATTRIBUTE_MAPPING . 0 . get ( part) 
272273                    { 
273-                         for  f in  accepts { 
274-                             let  cx = AcceptContext  { 
275-                                 group_cx :  & group_cx, 
276-                                 attr_span :  lower_span ( attr. span ) , 
277-                             } ; 
278- 
279-                             f ( & cx,  & args) 
280-                         } 
274+                         let  cx =
275+                             AcceptContext  {  group_cx :  & group_cx,  attr_span :  lower_span ( attr. span )  } ; 
276+ 
277+                         accept ( & cx,  & args) 
281278                    }  else  { 
282279                        // if we're here, we must be compiling a tool attribute... Or someone forgot to 
283280                        // parse their fancy new attribute. Let's warn them in any case. If you are that 
0 commit comments