@@ -80,7 +80,7 @@ use ty::adjustment;
8080use ty:: { self , Ty , TyCtxt } ;
8181
8282use hir:: { MutImmutable , MutMutable , PatKind } ;
83- use hir:: pat_util:: pat_adjust_pos ;
83+ use hir:: pat_util:: EnumerateAndAdjustIterator ;
8484use hir;
8585use syntax:: ast;
8686use syntax:: codemap:: Span ;
@@ -1230,15 +1230,15 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> {
12301230 match opt_def {
12311231 Some ( Def :: Variant ( enum_def, def_id) ) => {
12321232 // 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 ) {
12361236 let subpat_ty = self . pat_ty ( & subpat) ?; // see (*2)
12371237
12381238 let subcmt =
12391239 self . cat_imm_interior (
12401240 pat, cmt. clone ( ) , subpat_ty,
1241- InteriorField ( PositionalField ( adjust ( i ) ) ) ) ;
1241+ InteriorField ( PositionalField ( i ) ) ) ;
12421242
12431243 self . cat_pattern_ ( subcmt, & subpat, op) ?;
12441244 }
@@ -1253,13 +1253,12 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> {
12531253 }
12541254 } ;
12551255
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) {
12581257 let subpat_ty = self . pat_ty ( & subpat) ?; // see (*2)
12591258 let cmt_field =
12601259 self . cat_imm_interior (
12611260 pat, cmt. clone ( ) , subpat_ty,
1262- InteriorField ( PositionalField ( adjust ( i ) ) ) ) ;
1261+ InteriorField ( PositionalField ( i ) ) ) ;
12631262 self . cat_pattern_ ( cmt_field, & subpat, op) ?;
12641263 }
12651264 }
@@ -1300,13 +1299,12 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> {
13001299 Ok ( & ty:: TyS { sty : ty:: TyTuple ( ref tys) , ..} ) => tys. len ( ) ,
13011300 ref ty => span_bug ! ( pat. span, "tuple pattern unexpected type {:?}" , ty) ,
13021301 } ;
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) {
13051303 let subpat_ty = self . pat_ty ( & subpat) ?; // see (*2)
13061304 let subcmt =
13071305 self . cat_imm_interior (
13081306 pat, cmt. clone ( ) , subpat_ty,
1309- InteriorField ( PositionalField ( adjust ( i ) ) ) ) ;
1307+ InteriorField ( PositionalField ( i ) ) ) ;
13101308 self . cat_pattern_ ( subcmt, & subpat, op) ?;
13111309 }
13121310 }
0 commit comments