@@ -80,7 +80,7 @@ use ty::adjustment;
80
80
use ty:: { self , Ty , TyCtxt } ;
81
81
82
82
use hir:: { MutImmutable , MutMutable , PatKind } ;
83
- use hir:: pat_util:: pat_adjust_pos ;
83
+ use hir:: pat_util:: EnumerateAndAdjustIterator ;
84
84
use hir;
85
85
use syntax:: ast;
86
86
use syntax:: codemap:: Span ;
@@ -1230,15 +1230,15 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> {
1230
1230
match opt_def {
1231
1231
Some ( Def :: Variant ( enum_def, def_id) ) => {
1232
1232
// variant(x, y, z)
1233
- let variant = self . tcx ( ) . lookup_adt_def ( enum_def) . variant_with_id ( def_id ) ;
1234
- let adjust = pat_adjust_pos ( variant . fields . len ( ) , subpats . len ( ) , ddpos ) ;
1235
- for ( i, subpat) in subpats. iter ( ) . enumerate ( ) {
1233
+ let expected_len = self . tcx ( ) . lookup_adt_def ( enum_def)
1234
+ . variant_with_id ( def_id ) . fields . len ( ) ;
1235
+ for ( i, subpat) in subpats. iter ( ) . enumerate_and_adjust ( expected_len , ddpos ) {
1236
1236
let subpat_ty = self . pat_ty ( & subpat) ?; // see (*2)
1237
1237
1238
1238
let subcmt =
1239
1239
self . cat_imm_interior (
1240
1240
pat, cmt. clone ( ) , subpat_ty,
1241
- InteriorField ( PositionalField ( adjust ( i ) ) ) ) ;
1241
+ InteriorField ( PositionalField ( i ) ) ) ;
1242
1242
1243
1243
self . cat_pattern_ ( subcmt, & subpat, op) ?;
1244
1244
}
@@ -1253,13 +1253,12 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> {
1253
1253
}
1254
1254
} ;
1255
1255
1256
- let adjust = pat_adjust_pos ( expected_len, subpats. len ( ) , ddpos) ;
1257
- for ( i, subpat) in subpats. iter ( ) . enumerate ( ) {
1256
+ for ( i, subpat) in subpats. iter ( ) . enumerate_and_adjust ( expected_len, ddpos) {
1258
1257
let subpat_ty = self . pat_ty ( & subpat) ?; // see (*2)
1259
1258
let cmt_field =
1260
1259
self . cat_imm_interior (
1261
1260
pat, cmt. clone ( ) , subpat_ty,
1262
- InteriorField ( PositionalField ( adjust ( i ) ) ) ) ;
1261
+ InteriorField ( PositionalField ( i ) ) ) ;
1263
1262
self . cat_pattern_ ( cmt_field, & subpat, op) ?;
1264
1263
}
1265
1264
}
@@ -1300,13 +1299,12 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> {
1300
1299
Ok ( & ty:: TyS { sty : ty:: TyTuple ( ref tys) , ..} ) => tys. len ( ) ,
1301
1300
ref ty => span_bug ! ( pat. span, "tuple pattern unexpected type {:?}" , ty) ,
1302
1301
} ;
1303
- let adjust = pat_adjust_pos ( expected_len, subpats. len ( ) , ddpos) ;
1304
- for ( i, subpat) in subpats. iter ( ) . enumerate ( ) {
1302
+ for ( i, subpat) in subpats. iter ( ) . enumerate_and_adjust ( expected_len, ddpos) {
1305
1303
let subpat_ty = self . pat_ty ( & subpat) ?; // see (*2)
1306
1304
let subcmt =
1307
1305
self . cat_imm_interior (
1308
1306
pat, cmt. clone ( ) , subpat_ty,
1309
- InteriorField ( PositionalField ( adjust ( i ) ) ) ) ;
1307
+ InteriorField ( PositionalField ( i ) ) ) ;
1310
1308
self . cat_pattern_ ( subcmt, & subpat, op) ?;
1311
1309
}
1312
1310
}
0 commit comments