@@ -685,7 +685,7 @@ fn walk_meta_list_item<T: MutVisitor>(vis: &mut T, li: &mut NestedMetaItem) {
685685 }
686686}
687687
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 ) {
689689 let MetaItem { unsafety : _, path : _, kind, span } = mi;
690690 match kind {
691691 MetaItemKind :: Word => { }
@@ -901,7 +901,7 @@ fn walk_coroutine_kind<T: MutVisitor>(vis: &mut T, coroutine_kind: &mut Coroutin
901901 }
902902}
903903
904- fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
904+ pub fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
905905 match kind {
906906 FnKind :: Fn ( _ctxt, _ident, FnSig { header, decl, span } , generics, body) => {
907907 // 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) {
934934 }
935935}
936936
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 ) {
938938 match pb {
939939 GenericBound :: Trait ( ty, _modifier) => vis. visit_poly_trait_ref ( ty) ,
940940 GenericBound :: Outlives ( lifetime) => walk_lifetime ( vis, lifetime) ,
@@ -984,11 +984,11 @@ pub fn walk_flat_map_generic_param<T: MutVisitor>(
984984 smallvec ! [ param]
985985}
986986
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 ) {
988988 vis. visit_ident ( ident) ;
989989}
990990
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 ) {
992992 vis. visit_id ( id) ;
993993 vis. visit_ident ( ident) ;
994994}
@@ -1332,6 +1332,14 @@ pub fn walk_crate<T: MutVisitor>(vis: &mut T, krate: &mut Crate) {
13321332 vis. visit_span ( inject_use_span) ;
13331333}
13341334
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+
13351343/// Mutates one item, returning the item again.
13361344pub fn walk_flat_map_item < K : NoopVisitItemKind > (
13371345 visitor : & mut impl MutVisitor ,
@@ -1842,3 +1850,26 @@ pub enum FnKind<'a> {
18421850 /// E.g., `|x, y| body`.
18431851 Closure ( & ' a mut ClosureBinder , & ' a mut P < FnDecl > , & ' a mut P < Expr > ) ,
18441852}
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