@@ -104,8 +104,16 @@ pub trait MutVisitor: Sized {
104104 walk_use_tree ( self , use_tree) ;
105105 }
106106
107+ fn visit_foreign_item ( & mut self , ni : & mut P < ForeignItem > ) {
108+ walk_item ( self , ni) ;
109+ }
110+
107111 fn flat_map_foreign_item ( & mut self , ni : P < ForeignItem > ) -> SmallVec < [ P < ForeignItem > ; 1 ] > {
108- walk_flat_map_item ( self , ni)
112+ walk_flat_map_foreign_item ( self , ni)
113+ }
114+
115+ fn visit_item ( & mut self , i : & mut P < Item > ) {
116+ walk_item ( self , i) ;
109117 }
110118
111119 fn flat_map_item ( & mut self , i : P < Item > ) -> SmallVec < [ P < Item > ; 1 ] > {
@@ -116,10 +124,18 @@ pub trait MutVisitor: Sized {
116124 walk_fn_header ( self , header) ;
117125 }
118126
127+ fn visit_field_def ( & mut self , fd : & mut FieldDef ) {
128+ walk_field_def ( self , fd) ;
129+ }
130+
119131 fn flat_map_field_def ( & mut self , fd : FieldDef ) -> SmallVec < [ FieldDef ; 1 ] > {
120132 walk_flat_map_field_def ( self , fd)
121133 }
122134
135+ fn visit_assoc_item ( & mut self , i : & mut P < AssocItem > , ctxt : AssocCtxt ) {
136+ walk_assoc_item ( self , i, ctxt)
137+ }
138+
123139 fn flat_map_assoc_item (
124140 & mut self ,
125141 i : P < AssocItem > ,
@@ -153,6 +169,10 @@ pub trait MutVisitor: Sized {
153169 walk_flat_map_stmt ( self , s)
154170 }
155171
172+ fn visit_arm ( & mut self , arm : & mut Arm ) {
173+ walk_arm ( self , arm) ;
174+ }
175+
156176 fn flat_map_arm ( & mut self , arm : Arm ) -> SmallVec < [ Arm ; 1 ] > {
157177 walk_flat_map_arm ( self , arm)
158178 }
@@ -199,6 +219,10 @@ pub trait MutVisitor: Sized {
199219 walk_foreign_mod ( self , nm) ;
200220 }
201221
222+ fn visit_variant ( & mut self , v : & mut Variant ) {
223+ walk_variant ( self , v) ;
224+ }
225+
202226 fn flat_map_variant ( & mut self , v : Variant ) -> SmallVec < [ Variant ; 1 ] > {
203227 walk_flat_map_variant ( self , v)
204228 }
@@ -251,6 +275,10 @@ pub trait MutVisitor: Sized {
251275 walk_attribute ( self , at) ;
252276 }
253277
278+ fn visit_param ( & mut self , param : & mut Param ) {
279+ walk_param ( self , param) ;
280+ }
281+
254282 fn flat_map_param ( & mut self , param : Param ) -> SmallVec < [ Param ; 1 ] > {
255283 walk_flat_map_param ( self , param)
256284 }
@@ -271,6 +299,10 @@ pub trait MutVisitor: Sized {
271299 walk_variant_data ( self , vdata) ;
272300 }
273301
302+ fn visit_generic_param ( & mut self , param : & mut GenericParam ) {
303+ walk_generic_param ( self , param)
304+ }
305+
274306 fn flat_map_generic_param ( & mut self , param : GenericParam ) -> SmallVec < [ GenericParam ; 1 ] > {
275307 walk_flat_map_generic_param ( self , param)
276308 }
@@ -287,6 +319,10 @@ pub trait MutVisitor: Sized {
287319 walk_mt ( self , mt) ;
288320 }
289321
322+ fn visit_expr_field ( & mut self , f : & mut ExprField ) {
323+ walk_expr_field ( self , f) ;
324+ }
325+
290326 fn flat_map_expr_field ( & mut self , f : ExprField ) -> SmallVec < [ ExprField ; 1 ] > {
291327 walk_flat_map_expr_field ( self , f)
292328 }
@@ -311,6 +347,10 @@ pub trait MutVisitor: Sized {
311347 // Do nothing.
312348 }
313349
350+ fn visit_pat_field ( & mut self , fp : & mut PatField ) {
351+ walk_pat_field ( self , fp)
352+ }
353+
314354 fn flat_map_pat_field ( & mut self , fp : PatField ) -> SmallVec < [ PatField ; 1 ] > {
315355 walk_flat_map_pat_field ( self , fp)
316356 }
@@ -330,6 +370,10 @@ pub trait MutVisitor: Sized {
330370 fn visit_capture_by ( & mut self , capture_by : & mut CaptureBy ) {
331371 walk_capture_by ( self , capture_by)
332372 }
373+
374+ fn visit_fn_ret_ty ( & mut self , fn_ret_ty : & mut FnRetTy ) {
375+ walk_fn_ret_ty ( self , fn_ret_ty)
376+ }
333377}
334378
335379/// Use a map-style function (`FnOnce(T) -> T`) to overwrite a `&mut T`. Useful
@@ -425,16 +469,20 @@ pub fn visit_delim_span<T: MutVisitor>(vis: &mut T, DelimSpan { open, close }: &
425469 vis. visit_span ( close) ;
426470}
427471
428- pub fn walk_flat_map_pat_field < T : MutVisitor > (
429- vis : & mut T ,
430- mut fp : PatField ,
431- ) -> SmallVec < [ PatField ; 1 ] > {
432- let PatField { attrs, id, ident, is_placeholder : _, is_shorthand : _, pat, span } = & mut fp;
472+ pub fn walk_pat_field < T : MutVisitor > ( vis : & mut T , fp : & mut PatField ) {
473+ let PatField { attrs, id, ident, is_placeholder : _, is_shorthand : _, pat, span } = fp;
433474 vis. visit_id ( id) ;
434475 visit_attrs ( vis, attrs) ;
435476 vis. visit_ident ( ident) ;
436477 vis. visit_pat ( pat) ;
437478 vis. visit_span ( span) ;
479+ }
480+
481+ pub fn walk_flat_map_pat_field < T : MutVisitor > (
482+ vis : & mut T ,
483+ mut fp : PatField ,
484+ ) -> SmallVec < [ PatField ; 1 ] > {
485+ vis. visit_pat_field ( & mut fp) ;
438486 smallvec ! [ fp]
439487}
440488
@@ -455,14 +503,18 @@ fn walk_use_tree<T: MutVisitor>(vis: &mut T, use_tree: &mut UseTree) {
455503 vis. visit_span ( span) ;
456504}
457505
458- pub fn walk_flat_map_arm < T : MutVisitor > ( vis : & mut T , mut arm : Arm ) -> SmallVec < [ Arm ; 1 ] > {
459- let Arm { attrs, pat, guard, body, span, id, is_placeholder : _ } = & mut arm;
506+ pub fn walk_arm < T : MutVisitor > ( vis : & mut T , arm : & mut Arm ) {
507+ let Arm { attrs, pat, guard, body, span, id, is_placeholder : _ } = arm;
460508 vis. visit_id ( id) ;
461509 visit_attrs ( vis, attrs) ;
462510 vis. visit_pat ( pat) ;
463511 visit_opt ( guard, |guard| vis. visit_expr ( guard) ) ;
464512 visit_opt ( body, |body| vis. visit_expr ( body) ) ;
465513 vis. visit_span ( span) ;
514+ }
515+
516+ pub fn walk_flat_map_arm < T : MutVisitor > ( vis : & mut T , mut arm : Arm ) -> SmallVec < [ Arm ; 1 ] > {
517+ vis. visit_arm ( & mut arm) ;
466518 smallvec ! [ arm]
467519}
468520
@@ -539,18 +591,22 @@ fn walk_foreign_mod<T: MutVisitor>(vis: &mut T, foreign_mod: &mut ForeignMod) {
539591 items. flat_map_in_place ( |item| vis. flat_map_foreign_item ( item) ) ;
540592}
541593
542- pub fn walk_flat_map_variant < T : MutVisitor > (
543- visitor : & mut T ,
544- mut variant : Variant ,
545- ) -> SmallVec < [ Variant ; 1 ] > {
546- let Variant { ident, vis, attrs, id, data, disr_expr, span, is_placeholder : _ } = & mut variant;
594+ pub fn walk_variant < T : MutVisitor > ( visitor : & mut T , variant : & mut Variant ) {
595+ let Variant { ident, vis, attrs, id, data, disr_expr, span, is_placeholder : _ } = variant;
547596 visitor. visit_id ( id) ;
548597 visit_attrs ( visitor, attrs) ;
549598 visitor. visit_vis ( vis) ;
550599 visitor. visit_ident ( ident) ;
551600 visitor. visit_variant_data ( data) ;
552601 visit_opt ( disr_expr, |disr_expr| visitor. visit_anon_const ( disr_expr) ) ;
553602 visitor. visit_span ( span) ;
603+ }
604+
605+ pub fn walk_flat_map_variant < T : MutVisitor > (
606+ vis : & mut T ,
607+ mut variant : Variant ,
608+ ) -> SmallVec < [ Variant ; 1 ] > {
609+ vis. visit_variant ( & mut variant) ;
554610 smallvec ! [ variant]
555611}
556612
@@ -609,7 +665,7 @@ fn walk_angle_bracketed_parameter_data<T: MutVisitor>(vis: &mut T, data: &mut An
609665fn walk_parenthesized_parameter_data < T : MutVisitor > ( vis : & mut T , args : & mut ParenthesizedArgs ) {
610666 let ParenthesizedArgs { inputs, output, span, inputs_span } = args;
611667 visit_thin_vec ( inputs, |input| vis. visit_ty ( input) ) ;
612- walk_fn_ret_ty ( vis, output) ;
668+ vis. visit_fn_ret_ty ( output) ;
613669 vis. visit_span ( span) ;
614670 vis. visit_span ( inputs_span) ;
615671}
@@ -681,13 +737,17 @@ fn walk_meta_item<T: MutVisitor>(vis: &mut T, mi: &mut MetaItem) {
681737 vis. visit_span ( span) ;
682738}
683739
684- pub fn walk_flat_map_param < T : MutVisitor > ( vis : & mut T , mut param : Param ) -> SmallVec < [ Param ; 1 ] > {
685- let Param { attrs, id, pat, span, ty, is_placeholder : _ } = & mut param;
740+ pub fn walk_param < T : MutVisitor > ( vis : & mut T , param : & mut Param ) {
741+ let Param { attrs, id, pat, span, ty, is_placeholder : _ } = param;
686742 vis. visit_id ( id) ;
687743 visit_attrs ( vis, attrs) ;
688744 vis. visit_pat ( pat) ;
689745 vis. visit_ty ( ty) ;
690746 vis. visit_span ( span) ;
747+ }
748+
749+ pub fn walk_flat_map_param < T : MutVisitor > ( vis : & mut T , mut param : Param ) -> SmallVec < [ Param ; 1 ] > {
750+ vis. visit_param ( & mut param) ;
691751 smallvec ! [ param]
692752}
693753
@@ -911,7 +971,7 @@ fn walk_fn<T: MutVisitor>(vis: &mut T, kind: FnKind<'_>) {
911971fn walk_fn_decl < T : MutVisitor > ( vis : & mut T , decl : & mut P < FnDecl > ) {
912972 let FnDecl { inputs, output } = decl. deref_mut ( ) ;
913973 inputs. flat_map_in_place ( |param| vis. flat_map_param ( param) ) ;
914- walk_fn_ret_ty ( vis, output) ;
974+ vis. visit_fn_ret_ty ( output) ;
915975}
916976
917977fn walk_fn_ret_ty < T : MutVisitor > ( vis : & mut T , fn_ret_ty : & mut FnRetTy ) {
@@ -946,11 +1006,8 @@ fn walk_precise_capturing_arg<T: MutVisitor>(vis: &mut T, arg: &mut PreciseCaptu
9461006 }
9471007}
9481008
949- pub fn walk_flat_map_generic_param < T : MutVisitor > (
950- vis : & mut T ,
951- mut param : GenericParam ,
952- ) -> SmallVec < [ GenericParam ; 1 ] > {
953- let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder : _ } = & mut param;
1009+ pub fn walk_generic_param < T : MutVisitor > ( vis : & mut T , param : & mut GenericParam ) {
1010+ let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder : _ } = param;
9541011 vis. visit_id ( id) ;
9551012 visit_attrs ( vis, attrs) ;
9561013 vis. visit_ident ( ident) ;
@@ -968,6 +1025,13 @@ pub fn walk_flat_map_generic_param<T: MutVisitor>(
9681025 if let Some ( colon_span) = colon_span {
9691026 vis. visit_span ( colon_span) ;
9701027 }
1028+ }
1029+
1030+ pub fn walk_flat_map_generic_param < T : MutVisitor > (
1031+ vis : & mut T ,
1032+ mut param : GenericParam ,
1033+ ) -> SmallVec < [ GenericParam ; 1 ] > {
1034+ vis. visit_generic_param ( & mut param) ;
9711035 smallvec ! [ param]
9721036}
9731037
@@ -1050,30 +1114,38 @@ fn walk_poly_trait_ref<T: MutVisitor>(vis: &mut T, p: &mut PolyTraitRef) {
10501114 vis. visit_span ( span) ;
10511115}
10521116
1053- pub fn walk_flat_map_field_def < T : MutVisitor > (
1054- visitor : & mut T ,
1055- mut fd : FieldDef ,
1056- ) -> SmallVec < [ FieldDef ; 1 ] > {
1057- let FieldDef { span, ident, vis, id, ty, attrs, is_placeholder : _ } = & mut fd;
1117+ pub fn walk_field_def < T : MutVisitor > ( visitor : & mut T , fd : & mut FieldDef ) {
1118+ let FieldDef { span, ident, vis, id, ty, attrs, is_placeholder : _ } = fd;
10581119 visitor. visit_id ( id) ;
10591120 visit_attrs ( visitor, attrs) ;
10601121 visitor. visit_vis ( vis) ;
10611122 visit_opt ( ident, |ident| visitor. visit_ident ( ident) ) ;
10621123 visitor. visit_ty ( ty) ;
10631124 visitor. visit_span ( span) ;
1064- smallvec ! [ fd]
10651125}
10661126
1067- pub fn walk_flat_map_expr_field < T : MutVisitor > (
1127+ pub fn walk_flat_map_field_def < T : MutVisitor > (
10681128 vis : & mut T ,
1069- mut f : ExprField ,
1070- ) -> SmallVec < [ ExprField ; 1 ] > {
1071- let ExprField { ident, expr, span, is_shorthand : _, attrs, id, is_placeholder : _ } = & mut f;
1129+ mut fd : FieldDef ,
1130+ ) -> SmallVec < [ FieldDef ; 1 ] > {
1131+ vis. visit_field_def ( & mut fd) ;
1132+ smallvec ! [ fd]
1133+ }
1134+
1135+ pub fn walk_expr_field < T : MutVisitor > ( vis : & mut T , f : & mut ExprField ) {
1136+ let ExprField { ident, expr, span, is_shorthand : _, attrs, id, is_placeholder : _ } = f;
10721137 vis. visit_id ( id) ;
10731138 visit_attrs ( vis, attrs) ;
10741139 vis. visit_ident ( ident) ;
10751140 vis. visit_expr ( expr) ;
10761141 vis. visit_span ( span) ;
1142+ }
1143+
1144+ pub fn walk_flat_map_expr_field < T : MutVisitor > (
1145+ vis : & mut T ,
1146+ mut f : ExprField ,
1147+ ) -> SmallVec < [ ExprField ; 1 ] > {
1148+ vis. visit_expr_field ( & mut f) ;
10771149 smallvec ! [ f]
10781150}
10791151
@@ -1327,18 +1399,19 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
13271399 vis. visit_span ( inject_use_span) ;
13281400}
13291401
1330- pub fn walk_flat_map_item < K : WalkItemKind < Ctxt = ( ) > > (
1331- visitor : & mut impl MutVisitor ,
1332- item : P < Item < K > > ,
1333- ) -> SmallVec < [ P < Item < K > > ; 1 ] > {
1334- walk_flat_map_assoc_item ( visitor, item, ( ) )
1402+ pub fn walk_item ( visitor : & mut impl MutVisitor , item : & mut P < Item < impl WalkItemKind < Ctxt = ( ) > > > ) {
1403+ walk_item_ctxt ( visitor, item, ( ) )
1404+ }
1405+
1406+ pub fn walk_assoc_item ( visitor : & mut impl MutVisitor , item : & mut P < AssocItem > , ctxt : AssocCtxt ) {
1407+ walk_item_ctxt ( visitor, item, ctxt)
13351408}
13361409
1337- pub fn walk_flat_map_assoc_item < K : WalkItemKind > (
1410+ fn walk_item_ctxt < K : WalkItemKind > (
13381411 visitor : & mut impl MutVisitor ,
1339- mut item : P < Item < K > > ,
1412+ item : & mut P < Item < K > > ,
13401413 ctxt : K :: Ctxt ,
1341- ) -> SmallVec < [ P < Item < K > > ; 1 ] > {
1414+ ) {
13421415 let Item { ident, attrs, id, kind, vis, span, tokens } = item. deref_mut ( ) ;
13431416 visitor. visit_id ( id) ;
13441417 visit_attrs ( visitor, attrs) ;
@@ -1347,6 +1420,27 @@ pub fn walk_flat_map_assoc_item<K: WalkItemKind>(
13471420 kind. walk ( * span, * id, ident, vis, ctxt, visitor) ;
13481421 visit_lazy_tts ( visitor, tokens) ;
13491422 visitor. visit_span ( span) ;
1423+ }
1424+
1425+ pub fn walk_flat_map_item ( vis : & mut impl MutVisitor , mut item : P < Item > ) -> SmallVec < [ P < Item > ; 1 ] > {
1426+ vis. visit_item ( & mut item) ;
1427+ smallvec ! [ item]
1428+ }
1429+
1430+ pub fn walk_flat_map_foreign_item (
1431+ vis : & mut impl MutVisitor ,
1432+ mut item : P < ForeignItem > ,
1433+ ) -> SmallVec < [ P < ForeignItem > ; 1 ] > {
1434+ vis. visit_foreign_item ( & mut item) ;
1435+ smallvec ! [ item]
1436+ }
1437+
1438+ pub fn walk_flat_map_assoc_item (
1439+ vis : & mut impl MutVisitor ,
1440+ mut item : P < AssocItem > ,
1441+ ctxt : AssocCtxt ,
1442+ ) -> SmallVec < [ P < AssocItem > ; 1 ] > {
1443+ vis. visit_assoc_item ( & mut item, ctxt) ;
13501444 smallvec ! [ item]
13511445}
13521446
0 commit comments