@@ -211,10 +211,6 @@ pub trait MutVisitor: Sized {
211211 walk_ident ( self , i) ;
212212 }
213213
214- fn visit_modifiers ( & mut self , m : & mut TraitBoundModifiers ) {
215- walk_modifiers ( self , m) ;
216- }
217-
218214 fn visit_path ( & mut self , p : & mut Path ) {
219215 walk_path ( self , p) ;
220216 }
@@ -367,6 +363,28 @@ pub trait MutVisitor: Sized {
367363
368364super :: common_visitor_and_walkers!( ( mut ) MutVisitor ) ;
369365
366+ macro_rules! generate_flat_map_visitor_fns {
367+ ( $( $name: ident, $Ty: ty, $flat_map_fn: ident; ) +) => {
368+ $(
369+ fn $name<V : MutVisitor >(
370+ vis: & mut V ,
371+ values: & mut ThinVec <$Ty>,
372+ ) {
373+ values. flat_map_in_place( |value| vis. $flat_map_fn( value) ) ;
374+ }
375+ ) +
376+ }
377+ }
378+
379+ generate_flat_map_visitor_fns ! {
380+ visit_items, P <Item >, flat_map_item;
381+ visit_foreign_items, P <ForeignItem >, flat_map_foreign_item;
382+ visit_generic_params, GenericParam , flat_map_generic_param;
383+ visit_stmts, Stmt , flat_map_stmt;
384+ visit_exprs, P <Expr >, filter_map_expr;
385+ visit_pat_fields, PatField , flat_map_pat_field;
386+ }
387+
370388#[ inline]
371389fn visit_vec < T , F > ( elems : & mut Vec < T > , mut visit_elem : F )
372390where
@@ -403,15 +421,6 @@ fn visit_attrs<T: MutVisitor>(vis: &mut T, attrs: &mut AttrVec) {
403421 }
404422}
405423
406- #[ allow( unused) ]
407- fn visit_exprs < T : MutVisitor > ( vis : & mut T , exprs : & mut Vec < P < Expr > > ) {
408- exprs. flat_map_in_place ( |expr| vis. filter_map_expr ( expr) )
409- }
410-
411- fn visit_thin_exprs < T : MutVisitor > ( vis : & mut T , exprs : & mut ThinVec < P < Expr > > ) {
412- exprs. flat_map_in_place ( |expr| vis. filter_map_expr ( expr) )
413- }
414-
415424fn visit_attr_args < T : MutVisitor > ( vis : & mut T , args : & mut AttrArgs ) {
416425 match args {
417426 AttrArgs :: Empty => { }
@@ -583,27 +592,6 @@ fn walk_parenthesized_parameter_data<T: MutVisitor>(vis: &mut T, args: &mut Pare
583592 vis. visit_span ( inputs_span) ;
584593}
585594
586- fn walk_local < T : MutVisitor > ( vis : & mut T , local : & mut Local ) {
587- let Local { id, super_, pat, ty, kind, span, colon_sp, attrs, tokens : _ } = local;
588- visit_opt ( super_, |sp| vis. visit_span ( sp) ) ;
589- vis. visit_id ( id) ;
590- visit_attrs ( vis, attrs) ;
591- vis. visit_pat ( pat) ;
592- visit_opt ( ty, |ty| vis. visit_ty ( ty) ) ;
593- match kind {
594- LocalKind :: Decl => { }
595- LocalKind :: Init ( init) => {
596- vis. visit_expr ( init) ;
597- }
598- LocalKind :: InitElse ( init, els) => {
599- vis. visit_expr ( init) ;
600- vis. visit_block ( els) ;
601- }
602- }
603- visit_opt ( colon_sp, |sp| vis. visit_span ( sp) ) ;
604- vis. visit_span ( span) ;
605- }
606-
607595fn walk_attribute < T : MutVisitor > ( vis : & mut T , attr : & mut Attribute ) {
608596 let Attribute { kind, id : _, style : _, span } = attr;
609597 match kind {
@@ -858,30 +846,6 @@ fn walk_trait_ref<T: MutVisitor>(vis: &mut T, TraitRef { path, ref_id }: &mut Tr
858846 vis. visit_path ( path) ;
859847}
860848
861- fn walk_poly_trait_ref < T : MutVisitor > ( vis : & mut T , p : & mut PolyTraitRef ) {
862- let PolyTraitRef { bound_generic_params, modifiers, trait_ref, span } = p;
863- vis. visit_modifiers ( modifiers) ;
864- bound_generic_params. flat_map_in_place ( |param| vis. flat_map_generic_param ( param) ) ;
865- vis. visit_trait_ref ( trait_ref) ;
866- vis. visit_span ( span) ;
867- }
868-
869- fn walk_modifiers < V : MutVisitor > ( vis : & mut V , m : & mut TraitBoundModifiers ) {
870- let TraitBoundModifiers { constness, asyncness, polarity } = m;
871- match constness {
872- BoundConstness :: Never => { }
873- BoundConstness :: Always ( span) | BoundConstness :: Maybe ( span) => vis. visit_span ( span) ,
874- }
875- match asyncness {
876- BoundAsyncness :: Normal => { }
877- BoundAsyncness :: Async ( span) => vis. visit_span ( span) ,
878- }
879- match polarity {
880- BoundPolarity :: Positive => { }
881- BoundPolarity :: Negative ( span) | BoundPolarity :: Maybe ( span) => vis. visit_span ( span) ,
882- }
883- }
884-
885849pub fn walk_field_def < T : MutVisitor > ( visitor : & mut T , fd : & mut FieldDef ) {
886850 let FieldDef { span, ident, vis, id, ty, attrs, is_placeholder : _, safety, default } = fd;
887851 visitor. visit_id ( id) ;
@@ -930,16 +894,6 @@ pub fn walk_item_kind<K: WalkItemKind>(
930894 kind. walk ( span, id, visibility, ctxt, vis)
931895}
932896
933- pub fn walk_crate < T : MutVisitor > ( vis : & mut T , krate : & mut Crate ) {
934- let Crate { attrs, items, spans, id, is_placeholder : _ } = krate;
935- vis. visit_id ( id) ;
936- visit_attrs ( vis, attrs) ;
937- items. flat_map_in_place ( |item| vis. flat_map_item ( item) ) ;
938- let ModSpans { inner_span, inject_use_span } = spans;
939- vis. visit_span ( inner_span) ;
940- vis. visit_span ( inject_use_span) ;
941- }
942-
943897pub fn walk_flat_map_item ( vis : & mut impl MutVisitor , mut item : P < Item > ) -> SmallVec < [ P < Item > ; 1 ] > {
944898 vis. visit_item ( & mut item) ;
945899 smallvec ! [ item]
@@ -1021,18 +975,18 @@ pub fn walk_expr<T: MutVisitor>(vis: &mut T, Expr { kind, id, span, attrs, token
1021975 vis. visit_id ( id) ;
1022976 visit_attrs ( vis, attrs) ;
1023977 match kind {
1024- ExprKind :: Array ( exprs) => visit_thin_exprs ( vis, exprs) ,
978+ ExprKind :: Array ( exprs) => visit_exprs ( vis, exprs) ,
1025979 ExprKind :: ConstBlock ( anon_const) => {
1026980 vis. visit_anon_const ( anon_const) ;
1027981 }
1028982 ExprKind :: Repeat ( expr, count) => {
1029983 vis. visit_expr ( expr) ;
1030984 vis. visit_anon_const ( count) ;
1031985 }
1032- ExprKind :: Tup ( exprs) => visit_thin_exprs ( vis, exprs) ,
986+ ExprKind :: Tup ( exprs) => visit_exprs ( vis, exprs) ,
1033987 ExprKind :: Call ( f, args) => {
1034988 vis. visit_expr ( f) ;
1035- visit_thin_exprs ( vis, args) ;
989+ visit_exprs ( vis, args) ;
1036990 }
1037991 ExprKind :: MethodCall ( box MethodCall {
1038992 seg : PathSegment { ident, id, args : seg_args } ,
@@ -1044,7 +998,7 @@ pub fn walk_expr<T: MutVisitor>(vis: &mut T, Expr { kind, id, span, attrs, token
1044998 vis. visit_id ( id) ;
1045999 vis. visit_ident ( ident) ;
10461000 visit_opt ( seg_args, |args| vis. visit_generic_args ( args) ) ;
1047- visit_thin_exprs ( vis, call_args) ;
1001+ visit_exprs ( vis, call_args) ;
10481002 vis. visit_span ( span) ;
10491003 }
10501004 ExprKind :: Binary ( binop, lhs, rhs) => {
0 commit comments