@@ -498,6 +498,15 @@ impl<'a, 'b> InvocationCollector<'a, 'b> {
498498    } 
499499} 
500500
501+ macro_rules!  configure { 
502+     ( $this: ident,  $node: ident)  => { 
503+         match  $this. cfg. configure( $node)  { 
504+             Some ( node)  => node, 
505+             None  => return  Default :: default ( ) , 
506+         } 
507+     } 
508+ } 
509+ 
501510impl < ' a ,  ' b >  Folder  for  InvocationCollector < ' a ,  ' b >  { 
502511    fn  fold_expr ( & mut  self ,  expr :  P < ast:: Expr > )  -> P < ast:: Expr >  { 
503512        let  mut  expr = self . cfg . configure_expr ( expr) . unwrap ( ) ; 
@@ -511,10 +520,7 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
511520    } 
512521
513522    fn  fold_opt_expr ( & mut  self ,  expr :  P < ast:: Expr > )  -> Option < P < ast:: Expr > >  { 
514-         let  mut  expr = match  self . cfg . configure ( expr)  { 
515-             Some ( expr)  => expr. unwrap ( ) , 
516-             None  => return  None , 
517-         } ; 
523+         let  mut  expr = configure ! ( self ,  expr) . unwrap ( ) ; 
518524        expr. node  = self . cfg . configure_expr_kind ( expr. node ) ; 
519525
520526        if  let  ast:: ExprKind :: Mac ( mac)  = expr. node  { 
@@ -539,10 +545,7 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
539545    } 
540546
541547    fn  fold_stmt ( & mut  self ,  stmt :  ast:: Stmt )  -> SmallVector < ast:: Stmt >  { 
542-         let  stmt = match  self . cfg . configure_stmt ( stmt)  { 
543-             Some ( stmt)  => stmt, 
544-             None  => return  SmallVector :: zero ( ) , 
545-         } ; 
548+         let  stmt = configure ! ( self ,  stmt) ; 
546549
547550        let  ( mac,  style,  attrs)  = match  stmt. node  { 
548551            StmtKind :: Mac ( mac)  => mac. unwrap ( ) , 
@@ -573,10 +576,7 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
573576    } 
574577
575578    fn  fold_item ( & mut  self ,  item :  P < ast:: Item > )  -> SmallVector < P < ast:: Item > >  { 
576-         let  item = match  self . cfg . configure ( item)  { 
577-             Some ( item)  => item, 
578-             None  => return  SmallVector :: zero ( ) , 
579-         } ; 
579+         let  item = configure ! ( self ,  item) ; 
580580
581581        let  ( item,  attr)  = self . classify_item ( item) ; 
582582        if  let  Some ( attr)  = attr { 
@@ -652,10 +652,7 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
652652    } 
653653
654654    fn  fold_trait_item ( & mut  self ,  item :  ast:: TraitItem )  -> SmallVector < ast:: TraitItem >  { 
655-         let  item = match  self . cfg . configure ( item)  { 
656-             Some ( item)  => item, 
657-             None  => return  SmallVector :: zero ( ) , 
658-         } ; 
655+         let  item = configure ! ( self ,  item) ; 
659656
660657        let  ( item,  attr)  = self . classify_item ( item) ; 
661658        if  let  Some ( attr)  = attr { 
@@ -673,10 +670,7 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
673670    } 
674671
675672    fn  fold_impl_item ( & mut  self ,  item :  ast:: ImplItem )  -> SmallVector < ast:: ImplItem >  { 
676-         let  item = match  self . cfg . configure ( item)  { 
677-             Some ( item)  => item, 
678-             None  => return  SmallVector :: zero ( ) , 
679-         } ; 
673+         let  item = configure ! ( self ,  item) ; 
680674
681675        let  ( item,  attr)  = self . classify_item ( item) ; 
682676        if  let  Some ( attr)  = attr { 
0 commit comments