@@ -685,7 +685,7 @@ fn walk_meta_list_item<T: MutVisitor>(vis: &mut T, li: &mut NestedMetaItem) {
685
685
}
686
686
}
687
687
688
- fn walk_meta_item < T : MutVisitor > ( vis : & mut T , mi : & mut MetaItem ) {
688
+ pub fn walk_meta_item < T : MutVisitor > ( vis : & mut T , mi : & mut MetaItem ) {
689
689
let MetaItem { unsafety : _, path : _, kind, span } = mi;
690
690
match kind {
691
691
MetaItemKind :: Word => { }
@@ -901,7 +901,7 @@ fn walk_coroutine_kind<T: MutVisitor>(vis: &mut T, coroutine_kind: &mut Coroutin
901
901
}
902
902
}
903
903
904
- fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
904
+ pub fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
905
905
match kind {
906
906
FnKind :: Fn ( _ctxt, _ident, FnSig { header, decl, span } , generics, body) => {
907
907
// Identifier and visibility are visited as a part of the item.
@@ -934,7 +934,7 @@ fn walk_fn_ret_ty<T: MutVisitor>(vis: &mut T, fn_ret_ty: &mut FnRetTy) {
934
934
}
935
935
}
936
936
937
- fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
937
+ pub fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
938
938
match pb {
939
939
GenericBound :: Trait ( ty, _modifier) => vis. visit_poly_trait_ref ( ty) ,
940
940
GenericBound :: Outlives ( lifetime) => walk_lifetime ( vis, lifetime) ,
@@ -984,11 +984,11 @@ pub fn walk_flat_map_generic_param<T: MutVisitor>(
984
984
smallvec ! [ param]
985
985
}
986
986
987
- fn walk_label < T : MutVisitor > ( vis : & mut T , Label { ident } : & mut Label ) {
987
+ pub fn walk_label < T : MutVisitor > ( vis : & mut T , Label { ident } : & mut Label ) {
988
988
vis. visit_ident ( ident) ;
989
989
}
990
990
991
- fn walk_lifetime < T : MutVisitor > ( vis : & mut T , Lifetime { id, ident } : & mut Lifetime ) {
991
+ pub fn walk_lifetime < T : MutVisitor > ( vis : & mut T , Lifetime { id, ident } : & mut Lifetime ) {
992
992
vis. visit_id ( id) ;
993
993
vis. visit_ident ( ident) ;
994
994
}
@@ -1332,6 +1332,14 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
1332
1332
vis. visit_span ( inject_use_span) ;
1333
1333
}
1334
1334
1335
+ pub fn walk_flat_map_assoc_item (
1336
+ visitor : & mut impl MutVisitor ,
1337
+ item : P < Item < AssocItemKind > > ,
1338
+ ctxt : AssocCtxt ,
1339
+ ) -> SmallVec < [ P < Item < AssocItemKind > > ; 1 ] > {
1340
+ walk_flat_map_item ( visitor, item, Some ( ctxt) )
1341
+ }
1342
+
1335
1343
/// Mutates one item, returning the item again.
1336
1344
pub fn walk_flat_map_item < K : NoopVisitItemKind > (
1337
1345
visitor : & mut impl MutVisitor ,
@@ -1842,3 +1850,26 @@ pub enum FnKind<'a> {
1842
1850
/// E.g., `|x, y| body`.
1843
1851
Closure ( & ' a mut ClosureBinder , & ' a mut P < FnDecl > , & ' a mut P < Expr > ) ,
1844
1852
}
1853
+
1854
+ impl FnKind < ' _ > {
1855
+ pub fn header ( & self ) -> Option < & FnHeader > {
1856
+ match self {
1857
+ FnKind :: Fn ( _, _, sig, _, _) => Some ( & sig. header ) ,
1858
+ FnKind :: Closure ( _, _, _) => None ,
1859
+ }
1860
+ }
1861
+
1862
+ pub fn ctxt ( & self ) -> Option < FnCtxt > {
1863
+ match * self {
1864
+ FnKind :: Fn ( ctxt, ..) => Some ( ctxt) ,
1865
+ FnKind :: Closure ( ..) => None ,
1866
+ }
1867
+ }
1868
+
1869
+ pub fn decl ( & self ) -> & FnDecl {
1870
+ match self {
1871
+ FnKind :: Fn ( _, _, sig, _, _) => & sig. decl ,
1872
+ FnKind :: Closure ( _, decl, _) => decl,
1873
+ }
1874
+ }
1875
+ }
0 commit comments