@@ -211,10 +211,6 @@ pub trait MutVisitor: Sized {
211
211
walk_ident ( self , i) ;
212
212
}
213
213
214
- fn visit_modifiers ( & mut self , m : & mut TraitBoundModifiers ) {
215
- walk_modifiers ( self , m) ;
216
- }
217
-
218
214
fn visit_path ( & mut self , p : & mut Path ) {
219
215
walk_path ( self , p) ;
220
216
}
@@ -367,6 +363,28 @@ pub trait MutVisitor: Sized {
367
363
368
364
super :: common_visitor_and_walkers!( ( mut ) MutVisitor ) ;
369
365
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
+
370
388
#[ inline]
371
389
fn visit_vec < T , F > ( elems : & mut Vec < T > , mut visit_elem : F )
372
390
where
@@ -403,15 +421,6 @@ fn visit_attrs<T: MutVisitor>(vis: &mut T, attrs: &mut AttrVec) {
403
421
}
404
422
}
405
423
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
-
415
424
fn visit_attr_args < T : MutVisitor > ( vis : & mut T , args : & mut AttrArgs ) {
416
425
match args {
417
426
AttrArgs :: Empty => { }
@@ -583,27 +592,6 @@ fn walk_parenthesized_parameter_data<T: MutVisitor>(vis: &mut T, args: &mut Pare
583
592
vis. visit_span ( inputs_span) ;
584
593
}
585
594
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
-
607
595
fn walk_attribute < T : MutVisitor > ( vis : & mut T , attr : & mut Attribute ) {
608
596
let Attribute { kind, id : _, style : _, span } = attr;
609
597
match kind {
@@ -858,30 +846,6 @@ fn walk_trait_ref<T: MutVisitor>(vis: &mut T, TraitRef { path, ref_id }: &mut Tr
858
846
vis. visit_path ( path) ;
859
847
}
860
848
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
-
885
849
pub fn walk_field_def < T : MutVisitor > ( visitor : & mut T , fd : & mut FieldDef ) {
886
850
let FieldDef { span, ident, vis, id, ty, attrs, is_placeholder : _, safety, default } = fd;
887
851
visitor. visit_id ( id) ;
@@ -930,16 +894,6 @@ pub fn walk_item_kind<K: WalkItemKind>(
930
894
kind. walk ( span, id, visibility, ctxt, vis)
931
895
}
932
896
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
-
943
897
pub fn walk_flat_map_item ( vis : & mut impl MutVisitor , mut item : P < Item > ) -> SmallVec < [ P < Item > ; 1 ] > {
944
898
vis. visit_item ( & mut item) ;
945
899
smallvec ! [ item]
@@ -1021,18 +975,18 @@ pub fn walk_expr<T: MutVisitor>(vis: &mut T, Expr { kind, id, span, attrs, token
1021
975
vis. visit_id ( id) ;
1022
976
visit_attrs ( vis, attrs) ;
1023
977
match kind {
1024
- ExprKind :: Array ( exprs) => visit_thin_exprs ( vis, exprs) ,
978
+ ExprKind :: Array ( exprs) => visit_exprs ( vis, exprs) ,
1025
979
ExprKind :: ConstBlock ( anon_const) => {
1026
980
vis. visit_anon_const ( anon_const) ;
1027
981
}
1028
982
ExprKind :: Repeat ( expr, count) => {
1029
983
vis. visit_expr ( expr) ;
1030
984
vis. visit_anon_const ( count) ;
1031
985
}
1032
- ExprKind :: Tup ( exprs) => visit_thin_exprs ( vis, exprs) ,
986
+ ExprKind :: Tup ( exprs) => visit_exprs ( vis, exprs) ,
1033
987
ExprKind :: Call ( f, args) => {
1034
988
vis. visit_expr ( f) ;
1035
- visit_thin_exprs ( vis, args) ;
989
+ visit_exprs ( vis, args) ;
1036
990
}
1037
991
ExprKind :: MethodCall ( box MethodCall {
1038
992
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
1044
998
vis. visit_id ( id) ;
1045
999
vis. visit_ident ( ident) ;
1046
1000
visit_opt ( seg_args, |args| vis. visit_generic_args ( args) ) ;
1047
- visit_thin_exprs ( vis, call_args) ;
1001
+ visit_exprs ( vis, call_args) ;
1048
1002
vis. visit_span ( span) ;
1049
1003
}
1050
1004
ExprKind :: Binary ( binop, lhs, rhs) => {
0 commit comments