@@ -100,6 +100,10 @@ pub trait Folder : Sized {
100
100
noop_fold_fn_decl ( d, self )
101
101
}
102
102
103
+ fn fold_asyncness ( & mut self , a : IsAsync ) -> IsAsync {
104
+ noop_fold_asyncness ( a, self )
105
+ }
106
+
103
107
fn fold_block ( & mut self , b : P < Block > ) -> P < Block > {
104
108
noop_fold_block ( b, self )
105
109
}
@@ -396,8 +400,8 @@ pub fn noop_fold_ty<T: Folder>(t: P<Ty>, fld: &mut T) -> P<Ty> {
396
400
TyKind :: TraitObject ( bounds, syntax) => {
397
401
TyKind :: TraitObject ( bounds. move_map ( |b| fld. fold_param_bound ( b) ) , syntax)
398
402
}
399
- TyKind :: ImplTrait ( bounds) => {
400
- TyKind :: ImplTrait ( bounds. move_map ( |b| fld. fold_param_bound ( b) ) )
403
+ TyKind :: ImplTrait ( id , bounds) => {
404
+ TyKind :: ImplTrait ( fld . new_id ( id ) , bounds. move_map ( |b| fld. fold_param_bound ( b) ) )
401
405
}
402
406
TyKind :: Mac ( mac) => {
403
407
TyKind :: Mac ( fld. fold_mac ( mac) )
@@ -669,6 +673,16 @@ pub fn noop_fold_interpolated<T: Folder>(nt: token::Nonterminal, fld: &mut T)
669
673
}
670
674
}
671
675
676
+ pub fn noop_fold_asyncness < T : Folder > ( asyncness : IsAsync , fld : & mut T ) -> IsAsync {
677
+ match asyncness {
678
+ IsAsync :: Async { closure_id, return_impl_trait_id } => IsAsync :: Async {
679
+ closure_id : fld. new_id ( closure_id) ,
680
+ return_impl_trait_id : fld. new_id ( return_impl_trait_id) ,
681
+ } ,
682
+ IsAsync :: NotAsync => IsAsync :: NotAsync ,
683
+ }
684
+ }
685
+
672
686
pub fn noop_fold_fn_decl < T : Folder > ( decl : P < FnDecl > , fld : & mut T ) -> P < FnDecl > {
673
687
decl. map ( |FnDecl { inputs, output, variadic} | FnDecl {
674
688
inputs : inputs. move_map ( |x| fld. fold_arg ( x) ) ,
@@ -996,10 +1010,7 @@ pub fn noop_fold_impl_item<T: Folder>(i: ImplItem, folder: &mut T)
996
1010
}
997
1011
998
1012
pub fn noop_fold_fn_header < T : Folder > ( mut header : FnHeader , folder : & mut T ) -> FnHeader {
999
- header. asyncness = match header. asyncness {
1000
- IsAsync :: Async ( node_id) => IsAsync :: Async ( folder. new_id ( node_id) ) ,
1001
- IsAsync :: NotAsync => IsAsync :: NotAsync ,
1002
- } ;
1013
+ header. asyncness = folder. fold_asyncness ( header. asyncness ) ;
1003
1014
header
1004
1015
}
1005
1016
@@ -1249,12 +1260,8 @@ pub fn noop_fold_expr<T: Folder>(Expr {id, node, span, attrs}: Expr, folder: &mu
1249
1260
arms. move_map ( |x| folder. fold_arm ( x) ) )
1250
1261
}
1251
1262
ExprKind :: Closure ( capture_clause, asyncness, movability, decl, body, span) => {
1252
- let asyncness = match asyncness {
1253
- IsAsync :: Async ( node_id) => IsAsync :: Async ( folder. new_id ( node_id) ) ,
1254
- IsAsync :: NotAsync => IsAsync :: NotAsync ,
1255
- } ;
1256
1263
ExprKind :: Closure ( capture_clause,
1257
- asyncness,
1264
+ folder . fold_asyncness ( asyncness) ,
1258
1265
movability,
1259
1266
folder. fold_fn_decl ( decl) ,
1260
1267
folder. fold_expr ( body) ,
@@ -1265,7 +1272,11 @@ pub fn noop_fold_expr<T: Folder>(Expr {id, node, span, attrs}: Expr, folder: &mu
1265
1272
opt_label. map ( |label| folder. fold_label ( label) ) )
1266
1273
}
1267
1274
ExprKind :: Async ( capture_clause, node_id, body) => {
1268
- ExprKind :: Async ( capture_clause, folder. new_id ( node_id) , folder. fold_block ( body) )
1275
+ ExprKind :: Async (
1276
+ capture_clause,
1277
+ folder. new_id ( node_id) ,
1278
+ folder. fold_block ( body) ,
1279
+ )
1269
1280
}
1270
1281
ExprKind :: Assign ( el, er) => {
1271
1282
ExprKind :: Assign ( folder. fold_expr ( el) , folder. fold_expr ( er) )
0 commit comments