@@ -500,42 +500,16 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
500500 . resolver
501501 . take_derive_resolutions ( expn_id)
502502 . map ( |derives| {
503- enum AnnotatableRef < ' a > {
504- Item ( & ' a P < ast:: Item > ) ,
505- Stmt ( & ' a ast:: Stmt ) ,
506- }
507- let item = match & fragment {
508- AstFragment :: Items ( items) => match & items[ ..] {
509- [ item] => AnnotatableRef :: Item ( item) ,
510- _ => unreachable ! ( ) ,
511- } ,
512- AstFragment :: Stmts ( stmts) => match & stmts[ ..] {
513- [ stmt] => AnnotatableRef :: Stmt ( stmt) ,
514- _ => unreachable ! ( ) ,
515- } ,
516- _ => unreachable ! ( ) ,
517- } ;
518-
519503 derive_invocations. reserve ( derives. len ( ) ) ;
520504 derives
521505 . into_iter ( )
522- . map ( |( path, _exts) | {
506+ . map ( |( path, item , _exts) | {
523507 // FIXME: Consider using the derive resolutions (`_exts`)
524508 // instead of enqueuing the derives to be resolved again later.
525509 let expn_id = ExpnId :: fresh ( None ) ;
526510 derive_invocations. push ( (
527511 Invocation {
528- kind : InvocationKind :: Derive {
529- path,
530- item : match item {
531- AnnotatableRef :: Item ( item) => {
532- Annotatable :: Item ( item. clone ( ) )
533- }
534- AnnotatableRef :: Stmt ( stmt) => {
535- Annotatable :: Stmt ( P ( stmt. clone ( ) ) )
536- }
537- } ,
538- } ,
512+ kind : InvocationKind :: Derive { path, item } ,
539513 fragment_kind,
540514 expansion_data : ExpansionData {
541515 id : expn_id,
0 commit comments