@@ -168,6 +168,10 @@ pub trait Folder : Sized {
168
168
noop_fold_path ( p, self )
169
169
}
170
170
171
+ fn fold_qpath ( & mut self , qs : Option < QSelf > , p : Path ) -> ( Option < QSelf > , Path ) {
172
+ noop_fold_qpath ( qs, p, self )
173
+ }
174
+
171
175
fn fold_path_parameters ( & mut self , p : PathParameters ) -> PathParameters {
172
176
noop_fold_path_parameters ( p, self )
173
177
}
@@ -370,14 +374,8 @@ pub fn noop_fold_ty<T: Folder>(t: P<Ty>, fld: &mut T) -> P<Ty> {
370
374
TyKind :: Tup ( tys) => TyKind :: Tup ( tys. move_map ( |ty| fld. fold_ty ( ty) ) ) ,
371
375
TyKind :: Paren ( ty) => TyKind :: Paren ( fld. fold_ty ( ty) ) ,
372
376
TyKind :: Path ( qself, path) => {
373
- let qself = qself. map ( |QSelf { ty, path_span, position } | {
374
- QSelf {
375
- ty : fld. fold_ty ( ty) ,
376
- path_span : fld. new_span ( path_span) ,
377
- position,
378
- }
379
- } ) ;
380
- TyKind :: Path ( qself, fld. fold_path ( path) )
377
+ let ( qself, path) = fld. fold_qpath ( qself, path) ;
378
+ TyKind :: Path ( qself, path)
381
379
}
382
380
TyKind :: Array ( ty, length) => {
383
381
TyKind :: Array ( fld. fold_ty ( ty) , fld. fold_anon_const ( length) )
@@ -442,6 +440,19 @@ pub fn noop_fold_path<T: Folder>(Path { segments, span }: Path, fld: &mut T) ->
442
440
}
443
441
}
444
442
443
+ pub fn noop_fold_qpath < T : Folder > ( qself : Option < QSelf > ,
444
+ path : Path ,
445
+ fld : & mut T ) -> ( Option < QSelf > , Path ) {
446
+ let qself = qself. map ( |QSelf { ty, path_span, position } | {
447
+ QSelf {
448
+ ty : fld. fold_ty ( ty) ,
449
+ path_span : fld. new_span ( path_span) ,
450
+ position,
451
+ }
452
+ } ) ;
453
+ ( qself, fld. fold_path ( path) )
454
+ }
455
+
445
456
pub fn noop_fold_path_parameters < T : Folder > ( path_parameters : PathParameters , fld : & mut T )
446
457
-> PathParameters
447
458
{
@@ -1097,15 +1108,9 @@ pub fn noop_fold_pat<T: Folder>(p: P<Pat>, folder: &mut T) -> P<Pat> {
1097
1108
PatKind :: TupleStruct ( folder. fold_path ( pth) ,
1098
1109
pats. move_map ( |x| folder. fold_pat ( x) ) , ddpos)
1099
1110
}
1100
- PatKind :: Path ( opt_qself, pth) => {
1101
- let opt_qself = opt_qself. map ( |qself| {
1102
- QSelf {
1103
- ty : folder. fold_ty ( qself. ty ) ,
1104
- path_span : folder. new_span ( qself. path_span ) ,
1105
- position : qself. position ,
1106
- }
1107
- } ) ;
1108
- PatKind :: Path ( opt_qself, folder. fold_path ( pth) )
1111
+ PatKind :: Path ( qself, pth) => {
1112
+ let ( qself, pth) = folder. fold_qpath ( qself, pth) ;
1113
+ PatKind :: Path ( qself, pth)
1109
1114
}
1110
1115
PatKind :: Struct ( pth, fields, etc) => {
1111
1116
let pth = folder. fold_path ( pth) ;
@@ -1267,14 +1272,8 @@ pub fn noop_fold_expr<T: Folder>(Expr {id, node, span, attrs}: Expr, folder: &mu
1267
1272
lim)
1268
1273
}
1269
1274
ExprKind :: Path ( qself, path) => {
1270
- let qself = qself. map ( |QSelf { ty, path_span, position } | {
1271
- QSelf {
1272
- ty : folder. fold_ty ( ty) ,
1273
- path_span : folder. new_span ( path_span) ,
1274
- position,
1275
- }
1276
- } ) ;
1277
- ExprKind :: Path ( qself, folder. fold_path ( path) )
1275
+ let ( qself, path) = folder. fold_qpath ( qself, path) ;
1276
+ ExprKind :: Path ( qself, path)
1278
1277
}
1279
1278
ExprKind :: Break ( opt_label, opt_expr) => {
1280
1279
ExprKind :: Break ( opt_label. map ( |label| folder. fold_label ( label) ) ,
0 commit comments