@@ -682,7 +682,7 @@ fn walk_meta_list_item<T: MutVisitor>(vis: &mut T, li: &mut NestedMetaItem) {
682682 }
683683}
684684
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 ) {
686686 let MetaItem { unsafety : _, path : _, kind, span } = mi;
687687 match kind {
688688 MetaItemKind :: Word => { }
@@ -898,7 +898,7 @@ fn walk_coroutine_kind<T: MutVisitor>(vis: &mut T, coroutine_kind: &mut Coroutin
898898 }
899899}
900900
901- fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
901+ pub fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
902902 match kind {
903903 FnKind :: Fn ( _ctxt, _ident, FnSig { header, decl, span } , generics, body) => {
904904 // 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) {
931931 }
932932}
933933
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 ) {
935935 match pb {
936936 GenericBound :: Trait ( ty, _modifier) => vis. visit_poly_trait_ref ( ty) ,
937937 GenericBound :: Outlives ( lifetime) => walk_lifetime ( vis, lifetime) ,
@@ -981,11 +981,11 @@ pub fn walk_generic_param<T: MutVisitor>(
981981 smallvec ! [ param]
982982}
983983
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 ) {
985985 vis. visit_ident ( ident) ;
986986}
987987
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 ) {
989989 vis. visit_id ( id) ;
990990 vis. visit_ident ( ident) ;
991991}
@@ -1323,6 +1323,14 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
13231323 vis. visit_span ( inject_use_span) ;
13241324}
13251325
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+
13261334/// Mutates one item, returning the item again.
13271335pub fn walk_item < K : NoopVisitItemKind > (
13281336 visitor : & mut impl MutVisitor ,
@@ -1831,3 +1839,26 @@ pub enum FnKind<'a> {
18311839 /// E.g., `|x, y| body`.
18321840 Closure ( & ' a mut ClosureBinder , & ' a mut P < FnDecl > , & ' a mut P < Expr > ) ,
18331841}
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