@@ -36,7 +36,13 @@ impl<A: Array> ExpectOne<A> for SmallVec<A> {
3636}
3737
3838pub trait NoopVisitItemKind {
39- fn noop_visit ( & mut self , ctxt : Option < AssocCtxt > , visitor : & mut impl MutVisitor ) ;
39+ fn noop_visit (
40+ & mut self ,
41+ ctxt : Option < AssocCtxt > ,
42+ span : Span ,
43+ id : NodeId ,
44+ visitor : & mut impl MutVisitor ,
45+ ) ;
4046}
4147
4248pub trait MutVisitor : Sized {
@@ -122,7 +128,8 @@ pub trait MutVisitor: Sized {
122128 noop_visit_fn_decl ( d, self ) ;
123129 }
124130
125- fn visit_fn ( & mut self , fk : FnKind < ' _ > ) {
131+ /// `Span` and `NodeId` are mutated at the caller site.
132+ fn visit_fn ( & mut self , fk : FnKind < ' _ > , _: Span , _: NodeId ) {
126133 noop_visit_fn ( fk, self )
127134 }
128135
@@ -1089,12 +1096,23 @@ pub fn noop_visit_block<T: MutVisitor>(block: &mut P<Block>, vis: &mut T) {
10891096 vis. visit_span ( span) ;
10901097}
10911098
1092- pub fn noop_visit_item_kind ( kind : & mut impl NoopVisitItemKind , vis : & mut impl MutVisitor ) {
1093- kind. noop_visit ( None , vis)
1099+ pub fn noop_visit_item_kind (
1100+ kind : & mut impl NoopVisitItemKind ,
1101+ span : Span ,
1102+ id : NodeId ,
1103+ vis : & mut impl MutVisitor ,
1104+ ) {
1105+ kind. noop_visit ( None , span, id, vis)
10941106}
10951107
10961108impl NoopVisitItemKind for ItemKind {
1097- fn noop_visit ( & mut self , ctxt : Option < AssocCtxt > , vis : & mut impl MutVisitor ) {
1109+ fn noop_visit (
1110+ & mut self ,
1111+ ctxt : Option < AssocCtxt > ,
1112+ span : Span ,
1113+ id : NodeId ,
1114+ vis : & mut impl MutVisitor ,
1115+ ) {
10981116 assert_eq ! ( ctxt, None ) ;
10991117 match self {
11001118 ItemKind :: ExternCrate ( _orig_name) => { }
@@ -1108,7 +1126,7 @@ impl NoopVisitItemKind for ItemKind {
11081126 }
11091127 ItemKind :: Fn ( box Fn { defaultness, generics, sig, body } ) => {
11101128 visit_defaultness ( defaultness, vis) ;
1111- vis. visit_fn ( FnKind :: Fn ( FnCtxt :: Free , sig, generics, body) ) ;
1129+ vis. visit_fn ( FnKind :: Fn ( FnCtxt :: Free , sig, generics, body) , span , id ) ;
11121130 }
11131131 ItemKind :: Mod ( safety, mod_kind) => {
11141132 visit_safety ( safety, vis) ;
@@ -1207,15 +1225,21 @@ impl NoopVisitItemKind for ItemKind {
12071225}
12081226
12091227impl NoopVisitItemKind for AssocItemKind {
1210- fn noop_visit ( & mut self , ctxt : Option < AssocCtxt > , visitor : & mut impl MutVisitor ) {
1228+ fn noop_visit (
1229+ & mut self ,
1230+ ctxt : Option < AssocCtxt > ,
1231+ span : Span ,
1232+ id : NodeId ,
1233+ visitor : & mut impl MutVisitor ,
1234+ ) {
12111235 let ctxt = ctxt. unwrap ( ) ;
12121236 match self {
12131237 AssocItemKind :: Const ( item) => {
12141238 visit_const_item ( item, visitor) ;
12151239 }
12161240 AssocItemKind :: Fn ( box Fn { defaultness, generics, sig, body } ) => {
12171241 visit_defaultness ( defaultness, visitor) ;
1218- visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , sig, generics, body) ) ;
1242+ visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , sig, generics, body) , span , id ) ;
12191243 }
12201244 AssocItemKind :: Type ( box TyAlias {
12211245 defaultness,
@@ -1295,7 +1319,7 @@ pub fn noop_visit_crate<T: MutVisitor>(krate: &mut Crate, vis: &mut T) {
12951319 vis. visit_span ( inject_use_span) ;
12961320}
12971321
1298- // Mutates one item into possibly many items .
1322+ /// Mutates one item, returning the item again .
12991323pub fn noop_flat_map_item < K : NoopVisitItemKind > (
13001324 mut item : P < Item < K > > ,
13011325 ctxt : Option < AssocCtxt > ,
@@ -1306,14 +1330,20 @@ pub fn noop_flat_map_item<K: NoopVisitItemKind>(
13061330 visit_attrs ( attrs, visitor) ;
13071331 visitor. visit_vis ( vis) ;
13081332 visitor. visit_ident ( ident) ;
1309- kind. noop_visit ( ctxt, visitor) ;
1333+ kind. noop_visit ( ctxt, * span , * id , visitor) ;
13101334 visit_lazy_tts ( tokens, visitor) ;
13111335 visitor. visit_span ( span) ;
13121336 smallvec ! [ item]
13131337}
13141338
13151339impl NoopVisitItemKind for ForeignItemKind {
1316- fn noop_visit ( & mut self , ctxt : Option < AssocCtxt > , visitor : & mut impl MutVisitor ) {
1340+ fn noop_visit (
1341+ & mut self ,
1342+ ctxt : Option < AssocCtxt > ,
1343+ span : Span ,
1344+ id : NodeId ,
1345+ visitor : & mut impl MutVisitor ,
1346+ ) {
13171347 assert_eq ! ( ctxt, None ) ;
13181348 match self {
13191349 ForeignItemKind :: Static ( box StaticItem { ty, mutability : _, expr, safety : _ } ) => {
@@ -1322,7 +1352,7 @@ impl NoopVisitItemKind for ForeignItemKind {
13221352 }
13231353 ForeignItemKind :: Fn ( box Fn { defaultness, generics, sig, body } ) => {
13241354 visit_defaultness ( defaultness, visitor) ;
1325- visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Foreign , sig, generics, body) ) ;
1355+ visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Foreign , sig, generics, body) , span , id ) ;
13261356 }
13271357 ForeignItemKind :: TyAlias ( box TyAlias {
13281358 defaultness,
@@ -1535,7 +1565,7 @@ pub fn noop_visit_expr<T: MutVisitor>(
15351565 visit_constness ( constness, vis) ;
15361566 coroutine_kind. as_mut ( ) . map ( |coroutine_kind| vis. visit_coroutine_kind ( coroutine_kind) ) ;
15371567 vis. visit_capture_by ( capture_clause) ;
1538- vis. visit_fn ( FnKind :: Closure ( binder, fn_decl, body) ) ;
1568+ vis. visit_fn ( FnKind :: Closure ( binder, fn_decl, body) , * span , * id ) ;
15391569 vis. visit_span ( fn_decl_span) ;
15401570 vis. visit_span ( fn_arg_span) ;
15411571 }
0 commit comments