@@ -674,7 +674,7 @@ fn walk_meta_list_item<T: MutVisitor>(vis: &mut T, li: &mut NestedMetaItem) {
674
674
}
675
675
}
676
676
677
- fn walk_meta_item < T : MutVisitor > ( vis : & mut T , mi : & mut MetaItem ) {
677
+ pub fn walk_meta_item < T : MutVisitor > ( vis : & mut T , mi : & mut MetaItem ) {
678
678
let MetaItem { unsafety : _, path : _, kind, span } = mi;
679
679
match kind {
680
680
MetaItemKind :: Word => { }
@@ -890,7 +890,7 @@ fn walk_coroutine_kind<T: MutVisitor>(vis: &mut T, coroutine_kind: &mut Coroutin
890
890
}
891
891
}
892
892
893
- fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
893
+ pub fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
894
894
match kind {
895
895
FnKind :: Fn ( _ctxt, _ident, FnSig { header, decl, span } , generics, body) => {
896
896
// Identifier and visibility are visited as a part of the item.
@@ -923,7 +923,7 @@ fn walk_fn_ret_ty<T: MutVisitor>(vis: &mut T, fn_ret_ty: &mut FnRetTy) {
923
923
}
924
924
}
925
925
926
- fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
926
+ pub fn walk_param_bound < T : MutVisitor > ( vis : & mut T , pb : & mut GenericBound ) {
927
927
match pb {
928
928
GenericBound :: Trait ( ty, _modifier) => vis. visit_poly_trait_ref ( ty) ,
929
929
GenericBound :: Outlives ( lifetime) => walk_lifetime ( vis, lifetime) ,
@@ -973,11 +973,11 @@ pub fn walk_flat_map_generic_param<T: MutVisitor>(
973
973
smallvec ! [ param]
974
974
}
975
975
976
- fn walk_label < T : MutVisitor > ( vis : & mut T , Label { ident } : & mut Label ) {
976
+ pub fn walk_label < T : MutVisitor > ( vis : & mut T , Label { ident } : & mut Label ) {
977
977
vis. visit_ident ( ident) ;
978
978
}
979
979
980
- fn walk_lifetime < T : MutVisitor > ( vis : & mut T , Lifetime { id, ident } : & mut Lifetime ) {
980
+ pub fn walk_lifetime < T : MutVisitor > ( vis : & mut T , Lifetime { id, ident } : & mut Lifetime ) {
981
981
vis. visit_id ( id) ;
982
982
vis. visit_ident ( ident) ;
983
983
}
@@ -1321,6 +1321,14 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
1321
1321
vis. visit_span ( inject_use_span) ;
1322
1322
}
1323
1323
1324
+ pub fn walk_flat_map_assoc_item (
1325
+ visitor : & mut impl MutVisitor ,
1326
+ item : P < Item < AssocItemKind > > ,
1327
+ ctxt : AssocCtxt ,
1328
+ ) -> SmallVec < [ P < Item < AssocItemKind > > ; 1 ] > {
1329
+ walk_flat_map_item ( visitor, item, Some ( ctxt) )
1330
+ }
1331
+
1324
1332
/// Mutates one item, returning the item again.
1325
1333
pub fn walk_flat_map_item < K : NoopVisitItemKind > (
1326
1334
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