@@ -1771,6 +1771,38 @@ macro_rules! make_ast_visitor {
17711771            } 
17721772            return_result!( V ) 
17731773        } 
1774+ 
1775+         macro_if!{ $( $mut) ? { 
1776+             macro_rules! make_walk_flat_map { 
1777+                 ( 
1778+                     $ty:  ty
1779+                     $$( ,  $arg:  ident :  $arg_ty:  ty) * ; 
1780+                     $walk_flat_map:  ident, 
1781+                     $visit:  ident
1782+                 )  => { 
1783+                     pub  fn  $walk_flat_map( 
1784+                         vis:  & mut  impl  $trait$( <$lt>) ?, 
1785+                         mut  arg:  $ty
1786+                         $$( ,  $arg:  $arg_ty) * 
1787+                     )  -> SmallVec <[ $ty;  1 ] > { 
1788+                         vis. $visit( & mut  arg $$( ,  $arg) * ) ; 
1789+                         smallvec![ arg] 
1790+                     } 
1791+                 } 
1792+             } 
1793+ 
1794+             make_walk_flat_map!{ Arm ;  walk_flat_map_arm,  visit_arm} 
1795+             make_walk_flat_map!{ ExprField ;  walk_flat_map_expr_field,  visit_expr_field} 
1796+             make_walk_flat_map!{ FieldDef ;  walk_flat_map_field_def,  visit_field_def} 
1797+             make_walk_flat_map!{ GenericParam ;  walk_flat_map_generic_param,  visit_generic_param} 
1798+             make_walk_flat_map!{ Param ;  walk_flat_map_param,  visit_param} 
1799+             make_walk_flat_map!{ PatField ;  walk_flat_map_pat_field,  visit_pat_field} 
1800+             make_walk_flat_map!{ Variant ;  walk_flat_map_variant,  visit_variant} 
1801+ 
1802+             make_walk_flat_map!{ P <Item >;  walk_flat_map_item,  visit_item} 
1803+             make_walk_flat_map!{ P <AssocItem >,  ctxt:  AssocCtxt ;  walk_flat_map_assoc_item,  visit_assoc_item} 
1804+             make_walk_flat_map!{ P <ForeignItem >;  walk_flat_map_foreign_item,  visit_foreign_item} 
1805+         } } 
17741806    } 
17751807} 
17761808
@@ -1979,27 +2011,6 @@ pub mod mut_visit {
19792011        vis. visit_span ( close) ; 
19802012    } 
19812013
1982-     pub  fn  walk_flat_map_pat_field < T :  MutVisitor > ( 
1983-         vis :  & mut  T , 
1984-         mut  fp :  PatField , 
1985-     )  -> SmallVec < [ PatField ;  1 ] >  { 
1986-         vis. visit_pat_field ( & mut  fp) ; 
1987-         smallvec ! [ fp] 
1988-     } 
1989- 
1990-     pub  fn  walk_flat_map_arm < T :  MutVisitor > ( vis :  & mut  T ,  mut  arm :  Arm )  -> SmallVec < [ Arm ;  1 ] >  { 
1991-         vis. visit_arm ( & mut  arm) ; 
1992-         smallvec ! [ arm] 
1993-     } 
1994- 
1995-     pub  fn  walk_flat_map_variant < T :  MutVisitor > ( 
1996-         visitor :  & mut  T , 
1997-         mut  variant :  Variant , 
1998-     )  -> SmallVec < [ Variant ;  1 ] >  { 
1999-         visitor. visit_variant ( & mut  variant) ; 
2000-         smallvec ! [ variant] 
2001-     } 
2002- 
20032014    fn  walk_meta_list_item < T :  MutVisitor > ( vis :  & mut  T ,  li :  & mut  MetaItemInner )  { 
20042015        match  li { 
20052016            MetaItemInner :: MetaItem ( mi)  => vis. visit_meta_item ( mi) , 
@@ -2017,14 +2028,6 @@ pub mod mut_visit {
20172028        vis. visit_span ( span) ; 
20182029    } 
20192030
2020-     pub  fn  walk_flat_map_param < T :  MutVisitor > ( 
2021-         vis :  & mut  T , 
2022-         mut  param :  Param , 
2023-     )  -> SmallVec < [ Param ;  1 ] >  { 
2024-         vis. visit_param ( & mut  param) ; 
2025-         smallvec ! [ param] 
2026-     } 
2027- 
20282031    // No `noop_` prefix because there isn't a corresponding method in `MutVisitor`. 
20292032    fn  visit_attr_tt < T :  MutVisitor > ( vis :  & mut  T ,  tt :  & mut  AttrTokenTree )  { 
20302033        match  tt { 
@@ -2171,61 +2174,10 @@ pub mod mut_visit {
21712174        } 
21722175    } 
21732176
2174-     pub  fn  walk_flat_map_generic_param < T :  MutVisitor > ( 
2175-         vis :  & mut  T , 
2176-         mut  param :  GenericParam , 
2177-     )  -> SmallVec < [ GenericParam ;  1 ] >  { 
2178-         vis. visit_generic_param ( & mut  param) ; 
2179-         smallvec ! [ param] 
2180-     } 
2181- 
2182-     pub  fn  walk_flat_map_field_def < T :  MutVisitor > ( 
2183-         visitor :  & mut  T , 
2184-         mut  fd :  FieldDef , 
2185-     )  -> SmallVec < [ FieldDef ;  1 ] >  { 
2186-         visitor. visit_field_def ( & mut  fd) ; 
2187-         smallvec ! [ fd] 
2188-     } 
2189- 
2190-     pub  fn  walk_flat_map_expr_field < T :  MutVisitor > ( 
2191-         vis :  & mut  T , 
2192-         mut  f :  ExprField , 
2193-     )  -> SmallVec < [ ExprField ;  1 ] >  { 
2194-         vis. visit_expr_field ( & mut  f) ; 
2195-         smallvec ! [ f] 
2196-     } 
2197- 
21982177    pub  fn  walk_item_kind ( item :  & mut  Item < impl  WalkItemKind > ,  vis :  & mut  impl  MutVisitor )  { 
21992178        item. kind . walk ( item. id ,  item. span ,  & mut  item. vis ,  & mut  item. ident ,  vis) 
22002179    } 
22012180
2202-     /// Mutates one item, returning the item again. 
2203- pub  fn  walk_flat_map_item ( 
2204-         vis :  & mut  impl  MutVisitor , 
2205-         mut  item :  P < Item > , 
2206-     )  -> SmallVec < [ P < Item > ;  1 ] >  { 
2207-         vis. visit_item ( & mut  item) ; 
2208-         smallvec ! [ item] 
2209-     } 
2210- 
2211-     pub  fn  walk_flat_map_foreign_item ( 
2212-         vis :  & mut  impl  MutVisitor , 
2213-         mut  item :  P < ForeignItem > , 
2214-     )  -> SmallVec < [ P < ForeignItem > ;  1 ] >  { 
2215-         vis. visit_foreign_item ( & mut  item) ; 
2216-         smallvec ! [ item] 
2217-     } 
2218- 
2219-     /// Mutates one item, returning the item again. 
2220- pub  fn  walk_flat_map_assoc_item ( 
2221-         vis :  & mut  impl  MutVisitor , 
2222-         mut  item :  P < AssocItem > , 
2223-         ctxt :  AssocCtxt , 
2224-     )  -> SmallVec < [ P < AssocItem > ;  1 ] >  { 
2225-         vis. visit_assoc_item ( & mut  item,  ctxt) ; 
2226-         smallvec ! [ item] 
2227-     } 
2228- 
22292181    pub  fn  noop_filter_map_expr < T :  MutVisitor > ( vis :  & mut  T ,  mut  e :  P < Expr > )  -> Option < P < Expr > >  { 
22302182        Some ( { 
22312183            vis. visit_expr ( & mut  e) ; 
0 commit comments