@@ -208,7 +208,7 @@ pub trait MutVisitor: Sized {
208208    } 
209209
210210    fn  visit_ident ( & mut  self ,  i :  & mut  Ident )  { 
211-         walk_ident ( self ,  i ) ; 
211+         self . visit_span ( & mut  i . span ) ; 
212212    } 
213213
214214    fn  visit_path ( & mut  self ,  p :  & mut  Path )  { 
@@ -364,13 +364,16 @@ pub trait MutVisitor: Sized {
364364super :: common_visitor_and_walkers!( ( mut )  MutVisitor ) ; 
365365
366366macro_rules!  generate_flat_map_visitor_fns { 
367-     ( $( $name: ident,  $Ty: ty,  $flat_map_fn: ident; ) +)  => { 
367+     ( $( $name: ident,  $Ty: ty,  $flat_map_fn: ident$ ( ,  $param : ident :  $ParamTy : ty ) * ; ) +)  => { 
368368        $( 
369369            fn  $name<V :  MutVisitor >( 
370370                vis:  & mut  V , 
371371                values:  & mut  ThinVec <$Ty>, 
372+                 $( 
373+                     $param:  $ParamTy, 
374+                 ) * 
372375            )  { 
373-                 values. flat_map_in_place( |value| vis. $flat_map_fn( value) ) ; 
376+                 values. flat_map_in_place( |value| vis. $flat_map_fn( value$ ( , $param ) * ) ) ; 
374377            } 
375378        ) +
376379    } 
@@ -383,6 +386,8 @@ generate_flat_map_visitor_fns! {
383386    visit_stmts,  Stmt ,  flat_map_stmt; 
384387    visit_exprs,  P <Expr >,  filter_map_expr; 
385388    visit_pat_fields,  PatField ,  flat_map_pat_field; 
389+     visit_variants,  Variant ,  flat_map_variant; 
390+     visit_assoc_items,  P <AssocItem >,  flat_map_assoc_item,  ctxt:  AssocCtxt ; 
386391} 
387392
388393#[ inline]  
@@ -439,15 +444,6 @@ fn visit_delim_args<T: MutVisitor>(vis: &mut T, args: &mut DelimArgs) {
439444    vis. visit_span ( close) ; 
440445} 
441446
442- pub  fn  walk_pat_field < T :  MutVisitor > ( vis :  & mut  T ,  fp :  & mut  PatField )  { 
443-     let  PatField  {  attrs,  id,  ident,  is_placeholder :  _,  is_shorthand :  _,  pat,  span }  = fp; 
444-     vis. visit_id ( id) ; 
445-     visit_attrs ( vis,  attrs) ; 
446-     vis. visit_ident ( ident) ; 
447-     vis. visit_pat ( pat) ; 
448-     vis. visit_span ( span) ; 
449- } 
450- 
451447pub  fn  walk_flat_map_pat_field < T :  MutVisitor > ( 
452448    vis :  & mut  T , 
453449    mut  fp :  PatField , 
@@ -456,21 +452,13 @@ pub fn walk_flat_map_pat_field<T: MutVisitor>(
456452    smallvec ! [ fp] 
457453} 
458454
459- fn  walk_use_tree < T :  MutVisitor > ( vis :  & mut  T ,  use_tree :  & mut  UseTree )  { 
460-     let  UseTree  {  prefix,  kind,  span }  = use_tree; 
461-     vis. visit_path ( prefix) ; 
462-     match  kind { 
463-         UseTreeKind :: Simple ( rename)  => visit_opt ( rename,  |rename| vis. visit_ident ( rename) ) , 
464-         UseTreeKind :: Nested  {  items,  span }  => { 
465-             for  ( tree,  id)  in  items { 
466-                 vis. visit_id ( id) ; 
467-                 vis. visit_use_tree ( tree) ; 
468-             } 
469-             vis. visit_span ( span) ; 
470-         } 
471-         UseTreeKind :: Glob  => { } 
472-     } 
473-     vis. visit_span ( span) ; 
455+ fn  visit_nested_use_tree < V :  MutVisitor > ( 
456+     vis :  & mut  V , 
457+     nested_tree :  & mut  UseTree , 
458+     nested_id :  & mut  NodeId , 
459+ )  { 
460+     vis. visit_id ( nested_id) ; 
461+     vis. visit_use_tree ( nested_tree) ; 
474462} 
475463
476464pub  fn  walk_arm < T :  MutVisitor > ( vis :  & mut  T ,  arm :  & mut  Arm )  { 
@@ -507,31 +495,6 @@ fn walk_assoc_item_constraint<T: MutVisitor>(
507495    vis. visit_span ( span) ; 
508496} 
509497
510- pub  fn  walk_ty_pat < T :  MutVisitor > ( vis :  & mut  T ,  ty :  & mut  TyPat )  { 
511-     let  TyPat  {  id,  kind,  span,  tokens :  _ }  = ty; 
512-     vis. visit_id ( id) ; 
513-     match  kind { 
514-         TyPatKind :: Range ( start,  end,  _include_end)  => { 
515-             visit_opt ( start,  |c| vis. visit_anon_const ( c) ) ; 
516-             visit_opt ( end,  |c| vis. visit_anon_const ( c) ) ; 
517-         } 
518-         TyPatKind :: Or ( variants)  => visit_thin_vec ( variants,  |p| vis. visit_ty_pat ( p) ) , 
519-         TyPatKind :: Err ( _)  => { } 
520-     } 
521-     vis. visit_span ( span) ; 
522- } 
523- 
524- pub  fn  walk_variant < T :  MutVisitor > ( visitor :  & mut  T ,  variant :  & mut  Variant )  { 
525-     let  Variant  {  ident,  vis,  attrs,  id,  data,  disr_expr,  span,  is_placeholder :  _ }  = variant; 
526-     visitor. visit_id ( id) ; 
527-     visit_attrs ( visitor,  attrs) ; 
528-     visitor. visit_vis ( vis) ; 
529-     visitor. visit_ident ( ident) ; 
530-     visitor. visit_variant_data ( data) ; 
531-     visit_opt ( disr_expr,  |disr_expr| visitor. visit_anon_const ( disr_expr) ) ; 
532-     visitor. visit_span ( span) ; 
533- } 
534- 
535498pub  fn  walk_flat_map_variant < T :  MutVisitor > ( 
536499    vis :  & mut  T , 
537500    mut  variant :  Variant , 
@@ -540,25 +503,6 @@ pub fn walk_flat_map_variant<T: MutVisitor>(
540503    smallvec ! [ variant] 
541504} 
542505
543- fn  walk_ident < T :  MutVisitor > ( vis :  & mut  T ,  Ident  {  name :  _,  span } :  & mut  Ident )  { 
544-     vis. visit_span ( span) ; 
545- } 
546- 
547- fn  walk_path < T :  MutVisitor > ( vis :  & mut  T ,  Path  {  segments,  span,  tokens :  _ } :  & mut  Path )  { 
548-     for  segment in  segments { 
549-         vis. visit_path_segment ( segment) ; 
550-     } 
551-     vis. visit_span ( span) ; 
552- } 
553- 
554- fn  walk_qself < T :  MutVisitor > ( vis :  & mut  T ,  qself :  & mut  Option < P < QSelf > > )  { 
555-     visit_opt ( qself,  |qself| { 
556-         let  QSelf  {  ty,  path_span,  position :  _ }  = & mut  * * qself; 
557-         vis. visit_ty ( ty) ; 
558-         vis. visit_span ( path_span) ; 
559-     } ) 
560- } 
561- 
562506fn  walk_generic_args < T :  MutVisitor > ( vis :  & mut  T ,  generic_args :  & mut  GenericArgs )  { 
563507    match  generic_args { 
564508        GenericArgs :: AngleBracketed ( data)  => vis. visit_angle_bracketed_parameter_data ( data) , 
@@ -841,11 +785,6 @@ fn walk_variant_data<T: MutVisitor>(vis: &mut T, vdata: &mut VariantData) {
841785    } 
842786} 
843787
844- fn  walk_trait_ref < T :  MutVisitor > ( vis :  & mut  T ,  TraitRef  {  path,  ref_id } :  & mut  TraitRef )  { 
845-     vis. visit_id ( ref_id) ; 
846-     vis. visit_path ( path) ; 
847- } 
848- 
849788pub  fn  walk_field_def < T :  MutVisitor > ( visitor :  & mut  T ,  fd :  & mut  FieldDef )  { 
850789    let  FieldDef  {  span,  ident,  vis,  id,  ty,  attrs,  is_placeholder :  _,  safety,  default }  = fd; 
851790    visitor. visit_id ( id) ; 
@@ -866,15 +805,6 @@ pub fn walk_flat_map_field_def<T: MutVisitor>(
866805    smallvec ! [ fd] 
867806} 
868807
869- pub  fn  walk_expr_field < T :  MutVisitor > ( vis :  & mut  T ,  f :  & mut  ExprField )  { 
870-     let  ExprField  {  ident,  expr,  span,  is_shorthand :  _,  attrs,  id,  is_placeholder :  _ }  = f; 
871-     vis. visit_id ( id) ; 
872-     visit_attrs ( vis,  attrs) ; 
873-     vis. visit_ident ( ident) ; 
874-     vis. visit_expr ( expr) ; 
875-     vis. visit_span ( span) ; 
876- } 
877- 
878808pub  fn  walk_flat_map_expr_field < T :  MutVisitor > ( 
879809    vis :  & mut  T , 
880810    mut  f :  ExprField , 
0 commit comments