@@ -367,7 +367,7 @@ where
367
367
}
368
368
369
369
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
370
- fn visit_attrs < T : MutVisitor > ( vis : & mut T , attrs : & mut AttrVec ) {
370
+ pub fn visit_attrs < T : MutVisitor > ( vis : & mut T , attrs : & mut AttrVec ) {
371
371
for attr in attrs. iter_mut ( ) {
372
372
vis. visit_attribute ( attr) ;
373
373
}
@@ -626,7 +626,7 @@ fn walk_local<T: MutVisitor>(vis: &mut T, local: &mut P<Local>) {
626
626
vis. visit_span ( span) ;
627
627
}
628
628
629
- fn walk_attribute < T : MutVisitor > ( vis : & mut T , attr : & mut Attribute ) {
629
+ pub fn walk_attribute < T : MutVisitor > ( vis : & mut T , attr : & mut Attribute ) {
630
630
let Attribute { kind, id : _, style : _, span } = attr;
631
631
match kind {
632
632
AttrKind :: Normal ( normal) => {
@@ -825,7 +825,7 @@ fn visit_nonterminal<T: MutVisitor>(vis: &mut T, nt: &mut token::Nonterminal) {
825
825
}
826
826
827
827
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
828
- fn visit_defaultness < T : MutVisitor > ( vis : & mut T , defaultness : & mut Defaultness ) {
828
+ pub fn visit_defaultness < T : MutVisitor > ( vis : & mut T , defaultness : & mut Defaultness ) {
829
829
match defaultness {
830
830
Defaultness :: Default ( span) => vis. visit_span ( span) ,
831
831
Defaultness :: Final => { }
@@ -879,7 +879,7 @@ fn walk_coroutine_kind<T: MutVisitor>(vis: &mut T, coroutine_kind: &mut Coroutin
879
879
}
880
880
}
881
881
882
- fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
882
+ pub fn walk_fn < T : MutVisitor > ( vis : & mut T , kind : FnKind < ' _ > ) {
883
883
match kind {
884
884
FnKind :: Fn ( FnSig { header, decl, span } , generics, body) => {
885
885
// Identifier and visibility are visited as a part of the item.
@@ -891,8 +891,9 @@ fn walk_fn<T: MutVisitor>(vis: &mut T, kind: FnKind<'_>) {
891
891
}
892
892
vis. visit_span ( span) ;
893
893
}
894
- FnKind :: Closure ( binder, decl, body) => {
894
+ FnKind :: Closure ( binder, coroutine_kind , decl, body) => {
895
895
vis. visit_closure_binder ( binder) ;
896
+ coroutine_kind. as_mut ( ) . map ( |coroutine_kind| vis. visit_coroutine_kind ( coroutine_kind) ) ;
896
897
vis. visit_fn_decl ( decl) ;
897
898
vis. visit_expr ( body) ;
898
899
}
@@ -905,7 +906,7 @@ fn walk_fn_decl<T: MutVisitor>(vis: &mut T, decl: &mut P<FnDecl>) {
905
906
walk_fn_ret_ty ( vis, output) ;
906
907
}
907
908
908
- fn walk_fn_ret_ty < T : MutVisitor > ( vis : & mut T , fn_ret_ty : & mut FnRetTy ) {
909
+ pub fn walk_fn_ret_ty < T : MutVisitor > ( vis : & mut T , fn_ret_ty : & mut FnRetTy ) {
909
910
match fn_ret_ty {
910
911
FnRetTy :: Default ( span) => vis. visit_span ( span) ,
911
912
FnRetTy :: Ty ( ty) => vis. visit_ty ( ty) ,
@@ -1596,9 +1597,8 @@ pub fn walk_expr<T: MutVisitor>(vis: &mut T, Expr { kind, id, span, attrs, token
1596
1597
fn_arg_span,
1597
1598
} ) => {
1598
1599
visit_constness ( vis, constness) ;
1599
- coroutine_kind. as_mut ( ) . map ( |coroutine_kind| vis. visit_coroutine_kind ( coroutine_kind) ) ;
1600
1600
vis. visit_capture_by ( capture_clause) ;
1601
- vis. visit_fn ( FnKind :: Closure ( binder, fn_decl, body) , * span, * id) ;
1601
+ vis. visit_fn ( FnKind :: Closure ( binder, coroutine_kind , fn_decl, body) , * span, * id) ;
1602
1602
vis. visit_span ( fn_decl_span) ;
1603
1603
vis. visit_span ( fn_arg_span) ;
1604
1604
}
@@ -1864,5 +1864,10 @@ pub enum FnKind<'a> {
1864
1864
Fn ( & ' a mut FnSig , & ' a mut Generics , & ' a mut Option < P < Block > > ) ,
1865
1865
1866
1866
/// E.g., `|x, y| body`.
1867
- Closure ( & ' a mut ClosureBinder , & ' a mut P < FnDecl > , & ' a mut P < Expr > ) ,
1867
+ Closure (
1868
+ & ' a mut ClosureBinder ,
1869
+ & ' a mut Option < CoroutineKind > ,
1870
+ & ' a mut P < FnDecl > ,
1871
+ & ' a mut P < Expr > ,
1872
+ ) ,
1868
1873
}
0 commit comments