@@ -682,7 +682,7 @@ fn walk_meta_list_item<T: MutVisitor>(vis: &mut T, li: &mut NestedMetaItem) {
682
682
}
683
683
}
684
684
685
- fn walk_meta_item < T : MutVisitor > ( vis : & mut T , mi : & mut MetaItem ) {
685
+ pub fn walk_meta_item < T : MutVisitor > ( vis : & mut T , mi : & mut MetaItem ) {
686
686
let MetaItem { unsafety : _, path : _, kind, span } = mi;
687
687
match kind {
688
688
MetaItemKind :: Word => { }
@@ -898,7 +898,7 @@ fn walk_coroutine_kind<T: MutVisitor>(vis: &mut T, coroutine_kind: &mut Coroutin
898
898
}
899
899
}
900
900
901
- fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
901
+ pub fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
902
902
match kind {
903
903
FnKind :: Fn ( _ctxt, _ident, FnSig { header, decl, span } , generics, body) => {
904
904
// Identifier and visibility are visited as a part of the item.
@@ -931,7 +931,7 @@ fn walk_fn_ret_ty<T: MutVisitor>(vis: &mut T, fn_ret_ty: &mut FnRetTy) {
931
931
}
932
932
}
933
933
934
- fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
934
+ pub fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
935
935
match pb {
936
936
GenericBound :: Trait ( ty, _modifier) => vis. visit_poly_trait_ref ( ty) ,
937
937
GenericBound :: Outlives ( lifetime) => walk_lifetime ( vis, lifetime) ,
@@ -981,11 +981,11 @@ pub fn walk_generic_param<T: MutVisitor>(
981
981
smallvec ! [ param]
982
982
}
983
983
984
- fn walk_label < T : MutVisitor > ( vis : & mut T , Label { ident } : & mut Label ) {
984
+ pub fn walk_label < T : MutVisitor > ( vis : & mut T , Label { ident } : & mut Label ) {
985
985
vis. visit_ident ( ident) ;
986
986
}
987
987
988
- fn walk_lifetime < T : MutVisitor > ( vis : & mut T , Lifetime { id, ident } : & mut Lifetime ) {
988
+ pub fn walk_lifetime < T : MutVisitor > ( vis : & mut T , Lifetime { id, ident } : & mut Lifetime ) {
989
989
vis. visit_id ( id) ;
990
990
vis. visit_ident ( ident) ;
991
991
}
@@ -1323,6 +1323,14 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
1323
1323
vis. visit_span ( inject_use_span) ;
1324
1324
}
1325
1325
1326
+ pub fn walk_assoc_item (
1327
+ visitor : & mut impl MutVisitor ,
1328
+ item : P < Item < AssocItemKind > > ,
1329
+ ctxt : AssocCtxt ,
1330
+ ) -> SmallVec < [ P < Item < AssocItemKind > > ; 1 ] > {
1331
+ walk_item ( visitor, item, Some ( ctxt) )
1332
+ }
1333
+
1326
1334
/// Mutates one item, returning the item again.
1327
1335
pub fn walk_item < K : NoopVisitItemKind > (
1328
1336
visitor : & mut impl MutVisitor ,
@@ -1831,3 +1839,26 @@ pub enum FnKind<'a> {
1831
1839
/// E.g., `|x, y| body`.
1832
1840
Closure ( & ' a mut ClosureBinder , & ' a mut P < FnDecl > , & ' a mut P < Expr > ) ,
1833
1841
}
1842
+
1843
+ impl FnKind < ' _ > {
1844
+ pub fn header ( & self ) -> Option < & FnHeader > {
1845
+ match self {
1846
+ FnKind :: Fn ( _, _, sig, _, _) => Some ( & sig. header ) ,
1847
+ FnKind :: Closure ( _, _, _) => None ,
1848
+ }
1849
+ }
1850
+
1851
+ pub fn ctxt ( & self ) -> Option < FnCtxt > {
1852
+ match * self {
1853
+ FnKind :: Fn ( ctxt, ..) => Some ( ctxt) ,
1854
+ FnKind :: Closure ( ..) => None ,
1855
+ }
1856
+ }
1857
+
1858
+ pub fn decl ( & self ) -> & FnDecl {
1859
+ match self {
1860
+ FnKind :: Fn ( _, _, sig, _, _) => & sig. decl ,
1861
+ FnKind :: Closure ( _, decl, _) => decl,
1862
+ }
1863
+ }
1864
+ }
0 commit comments