@@ -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
@@ -1078,12 +1085,23 @@ pub fn noop_visit_block<T: MutVisitor>(block: &mut P<Block>, vis: &mut T) {
10781085 vis. visit_span ( span) ;
10791086}
10801087
1081- pub fn noop_visit_item_kind ( kind : & mut impl NoopVisitItemKind , vis : & mut impl MutVisitor ) {
1082- kind. noop_visit ( None , vis)
1088+ pub fn noop_visit_item_kind (
1089+ kind : & mut impl NoopVisitItemKind ,
1090+ span : Span ,
1091+ id : NodeId ,
1092+ vis : & mut impl MutVisitor ,
1093+ ) {
1094+ kind. noop_visit ( None , span, id, vis)
10831095}
10841096
10851097impl NoopVisitItemKind for ItemKind {
1086- fn noop_visit ( & mut self , ctxt : Option < AssocCtxt > , vis : & mut impl MutVisitor ) {
1098+ fn noop_visit (
1099+ & mut self ,
1100+ ctxt : Option < AssocCtxt > ,
1101+ span : Span ,
1102+ id : NodeId ,
1103+ vis : & mut impl MutVisitor ,
1104+ ) {
10871105 assert_eq ! ( ctxt, None ) ;
10881106 match self {
10891107 ItemKind :: ExternCrate ( _orig_name) => { }
@@ -1097,7 +1115,7 @@ impl NoopVisitItemKind for ItemKind {
10971115 }
10981116 ItemKind :: Fn ( box Fn { defaultness, generics, sig, body } ) => {
10991117 visit_defaultness ( defaultness, vis) ;
1100- vis. visit_fn ( FnKind :: Fn ( FnCtxt :: Free , sig, generics, body) ) ;
1118+ vis. visit_fn ( FnKind :: Fn ( FnCtxt :: Free , sig, generics, body) , span , id ) ;
11011119 }
11021120 ItemKind :: Mod ( safety, mod_kind) => {
11031121 visit_safety ( safety, vis) ;
@@ -1196,15 +1214,21 @@ impl NoopVisitItemKind for ItemKind {
11961214}
11971215
11981216impl NoopVisitItemKind for AssocItemKind {
1199- fn noop_visit ( & mut self , ctxt : Option < AssocCtxt > , visitor : & mut impl MutVisitor ) {
1217+ fn noop_visit (
1218+ & mut self ,
1219+ ctxt : Option < AssocCtxt > ,
1220+ span : Span ,
1221+ id : NodeId ,
1222+ visitor : & mut impl MutVisitor ,
1223+ ) {
12001224 let ctxt = ctxt. unwrap ( ) ;
12011225 match self {
12021226 AssocItemKind :: Const ( item) => {
12031227 visit_const_item ( item, visitor) ;
12041228 }
12051229 AssocItemKind :: Fn ( box Fn { defaultness, generics, sig, body } ) => {
12061230 visit_defaultness ( defaultness, visitor) ;
1207- visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , sig, generics, body) ) ;
1231+ visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , sig, generics, body) , span , id ) ;
12081232 }
12091233 AssocItemKind :: Type ( box TyAlias {
12101234 defaultness,
@@ -1284,7 +1308,7 @@ pub fn noop_visit_crate<T: MutVisitor>(krate: &mut Crate, vis: &mut T) {
12841308 vis. visit_span ( inject_use_span) ;
12851309}
12861310
1287- // Mutates one item into possibly many items .
1311+ /// Mutates one item, returning the item again .
12881312pub fn noop_flat_map_item < K : NoopVisitItemKind > (
12891313 mut item : P < Item < K > > ,
12901314 ctxt : Option < AssocCtxt > ,
@@ -1295,14 +1319,20 @@ pub fn noop_flat_map_item<K: NoopVisitItemKind>(
12951319 visit_attrs ( attrs, visitor) ;
12961320 visitor. visit_vis ( vis) ;
12971321 visitor. visit_ident ( ident) ;
1298- kind. noop_visit ( ctxt, visitor) ;
1322+ kind. noop_visit ( ctxt, * span , * id , visitor) ;
12991323 visit_lazy_tts ( tokens, visitor) ;
13001324 visitor. visit_span ( span) ;
13011325 smallvec ! [ item]
13021326}
13031327
13041328impl NoopVisitItemKind for ForeignItemKind {
1305- fn noop_visit ( & mut self , ctxt : Option < AssocCtxt > , visitor : & mut impl MutVisitor ) {
1329+ fn noop_visit (
1330+ & mut self ,
1331+ ctxt : Option < AssocCtxt > ,
1332+ span : Span ,
1333+ id : NodeId ,
1334+ visitor : & mut impl MutVisitor ,
1335+ ) {
13061336 assert_eq ! ( ctxt, None ) ;
13071337 match self {
13081338 ForeignItemKind :: Static ( box StaticItem { ty, mutability : _, expr, safety : _ } ) => {
@@ -1311,7 +1341,7 @@ impl NoopVisitItemKind for ForeignItemKind {
13111341 }
13121342 ForeignItemKind :: Fn ( box Fn { defaultness, generics, sig, body } ) => {
13131343 visit_defaultness ( defaultness, visitor) ;
1314- visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Foreign , sig, generics, body) ) ;
1344+ visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Foreign , sig, generics, body) , span , id ) ;
13151345 }
13161346 ForeignItemKind :: TyAlias ( box TyAlias {
13171347 defaultness,
@@ -1524,7 +1554,7 @@ pub fn noop_visit_expr<T: MutVisitor>(
15241554 visit_constness ( constness, vis) ;
15251555 coroutine_kind. as_mut ( ) . map ( |coroutine_kind| vis. visit_coroutine_kind ( coroutine_kind) ) ;
15261556 vis. visit_capture_by ( capture_clause) ;
1527- vis. visit_fn ( FnKind :: Closure ( binder, fn_decl, body) ) ;
1557+ vis. visit_fn ( FnKind :: Closure ( binder, fn_decl, body) , * span , * id ) ;
15281558 vis. visit_span ( fn_decl_span) ;
15291559 vis. visit_span ( fn_arg_span) ;
15301560 }
0 commit comments