@@ -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