@@ -37,7 +37,7 @@ impl<A: Array> ExpectOne<A> for SmallVec<A> {
3737}
3838
3939pub trait WalkItemKind {
40- fn walk ( & mut self , span : Span , id : NodeId , ident : & mut Ident , visibility : & mut Visibility , visitor : & mut impl MutVisitor ) ;
40+ fn walk ( & mut self , span : Span , id : NodeId , ident : & mut Ident , visibility : & mut Visibility , ctxt : AssocCtxt , visitor : & mut impl MutVisitor ) ;
4141}
4242
4343pub trait MutVisitor : Sized {
@@ -114,9 +114,9 @@ pub trait MutVisitor: Sized {
114114 fn flat_map_assoc_item (
115115 & mut self ,
116116 i : P < AssocItem > ,
117- _ctxt : AssocCtxt ,
117+ ctxt : AssocCtxt ,
118118 ) -> SmallVec < [ P < AssocItem > ; 1 ] > {
119- walk_flat_map_item ( self , i)
119+ walk_flat_map_assoc_item ( self , i, ctxt )
120120 }
121121
122122 fn visit_fn_decl ( & mut self , d : & mut P < FnDecl > ) {
@@ -1086,13 +1086,14 @@ pub fn walk_item_kind(
10861086 id : NodeId ,
10871087 ident : & mut Ident ,
10881088 visibility : & mut Visibility ,
1089+ ctxt : AssocCtxt ,
10891090 vis : & mut impl MutVisitor ,
10901091) {
1091- kind. walk ( span, id, ident, visibility, vis)
1092+ kind. walk ( span, id, ident, visibility, ctxt , vis)
10921093}
10931094
10941095impl WalkItemKind for ItemKind {
1095- fn walk ( & mut self , span : Span , id : NodeId , ident : & mut Ident , visibility : & mut Visibility , vis : & mut impl MutVisitor ) {
1096+ fn walk ( & mut self , span : Span , id : NodeId , ident : & mut Ident , visibility : & mut Visibility , _ctxt : AssocCtxt , vis : & mut impl MutVisitor ) {
10961097 match self {
10971098 ItemKind :: ExternCrate ( _orig_name) => { }
10981099 ItemKind :: Use ( use_tree) => vis. visit_use_tree ( use_tree) ,
@@ -1204,15 +1205,15 @@ impl WalkItemKind for ItemKind {
12041205}
12051206
12061207impl WalkItemKind for AssocItemKind {
1207- fn walk ( & mut self , span : Span , id : NodeId , ident : & mut Ident , visibility : & mut Visibility , visitor : & mut impl MutVisitor ) {
1208+ fn walk ( & mut self , span : Span , id : NodeId , ident : & mut Ident , visibility : & mut Visibility , ctxt : AssocCtxt , visitor : & mut impl MutVisitor ) {
12081209 match self {
12091210 AssocItemKind :: Const ( item) => {
12101211 visit_const_item ( item, visitor) ;
12111212 }
12121213 AssocItemKind :: Fn ( box Fn { defaultness, generics, sig, body } ) => {
12131214 visit_defaultness ( visitor, defaultness) ;
12141215 // TODO: use AssocCtxt
1215- visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Free , ident, sig, visibility, generics, body) , span, id) ;
1216+ visitor. visit_fn ( FnKind :: Fn ( FnCtxt :: Assoc ( ctxt ) , ident, sig, visibility, generics, body) , span, id) ;
12161217 }
12171218 AssocItemKind :: Type ( box TyAlias {
12181219 defaultness,
@@ -1292,24 +1293,31 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
12921293 vis. visit_span ( inject_use_span) ;
12931294}
12941295
1295- /// Mutates one item, returning the item again.
12961296pub fn walk_flat_map_item < K : WalkItemKind > (
1297+ visitor : & mut impl MutVisitor ,
1298+ item : P < Item < K > > ,
1299+ ) -> SmallVec < [ P < Item < K > > ; 1 ] > {
1300+ walk_flat_map_assoc_item ( visitor, item, AssocCtxt :: Trait /* ignored */ )
1301+ }
1302+
1303+ pub fn walk_flat_map_assoc_item < K : WalkItemKind > (
12971304 visitor : & mut impl MutVisitor ,
12981305 mut item : P < Item < K > > ,
1306+ ctxt : AssocCtxt ,
12991307) -> SmallVec < [ P < Item < K > > ; 1 ] > {
13001308 let Item { ident, attrs, id, kind, vis, span, tokens } = item. deref_mut ( ) ;
13011309 visitor. visit_id ( id) ;
13021310 visit_attrs ( visitor, attrs) ;
13031311 visitor. visit_vis ( vis) ;
13041312 visitor. visit_ident ( ident) ;
1305- kind. walk ( * span, * id, ident, vis, visitor) ;
1313+ kind. walk ( * span, * id, ident, vis, ctxt , visitor) ;
13061314 visit_lazy_tts ( visitor, tokens) ;
13071315 visitor. visit_span ( span) ;
13081316 smallvec ! [ item]
13091317}
13101318
13111319impl WalkItemKind for ForeignItemKind {
1312- fn walk ( & mut self , span : Span , id : NodeId , ident : & mut Ident , visibility : & mut Visibility , visitor : & mut impl MutVisitor ) {
1320+ fn walk ( & mut self , span : Span , id : NodeId , ident : & mut Ident , visibility : & mut Visibility , _ctxt : AssocCtxt , visitor : & mut impl MutVisitor ) {
13131321 match self {
13141322 ForeignItemKind :: Static ( box StaticItem { ty, mutability : _, expr, safety : _ } ) => {
13151323 visitor. visit_ty ( ty) ;
0 commit comments