@@ -346,9 +346,10 @@ fn add_fragment_siblings_for_extension<'tcx>(this: &MoveData<'tcx>,
346
346
Rc < LoanPath < ' tcx > > ) > ) {
347
347
let parent_ty = parent_lp. to_type ( ) ;
348
348
349
- let add_fragment_sibling_local = |field_name| {
349
+ let add_fragment_sibling_local = |field_name, variant_did | {
350
350
add_fragment_sibling_core (
351
- this, tcx, gathered_fragments, parent_lp. clone ( ) , mc, field_name, origin_lp) ;
351
+ this, tcx, gathered_fragments, parent_lp. clone ( ) , mc, field_name, origin_lp,
352
+ variant_did) ;
352
353
} ;
353
354
354
355
match ( & parent_ty. sty , enum_variant_info) {
@@ -363,7 +364,7 @@ fn add_fragment_siblings_for_extension<'tcx>(this: &MoveData<'tcx>,
363
364
for i in range ( 0 , tuple_len) {
364
365
if i == tuple_idx { continue }
365
366
let field_name = mc:: PositionalField ( i) ;
366
- add_fragment_sibling_local ( field_name) ;
367
+ add_fragment_sibling_local ( field_name, None ) ;
367
368
}
368
369
}
369
370
@@ -376,7 +377,7 @@ fn add_fragment_siblings_for_extension<'tcx>(this: &MoveData<'tcx>,
376
377
continue ;
377
378
}
378
379
let field_name = mc:: NamedField ( f. name ) ;
379
- add_fragment_sibling_local ( field_name) ;
380
+ add_fragment_sibling_local ( field_name, None ) ;
380
381
}
381
382
}
382
383
mc:: PositionalField ( tuple_idx) => {
@@ -385,7 +386,7 @@ fn add_fragment_siblings_for_extension<'tcx>(this: &MoveData<'tcx>,
385
386
continue
386
387
}
387
388
let field_name = mc:: PositionalField ( i) ;
388
- add_fragment_sibling_local ( field_name) ;
389
+ add_fragment_sibling_local ( field_name, None ) ;
389
390
}
390
391
}
391
392
}
@@ -414,7 +415,7 @@ fn add_fragment_siblings_for_extension<'tcx>(this: &MoveData<'tcx>,
414
415
continue ;
415
416
}
416
417
let field_name = mc:: NamedField ( variant_arg_ident. name ) ;
417
- add_fragment_sibling_local ( field_name) ;
418
+ add_fragment_sibling_local ( field_name, Some ( variant_info . id ) ) ;
418
419
}
419
420
}
420
421
mc:: PositionalField ( tuple_idx) => {
@@ -424,7 +425,7 @@ fn add_fragment_siblings_for_extension<'tcx>(this: &MoveData<'tcx>,
424
425
continue ;
425
426
}
426
427
let field_name = mc:: PositionalField ( i) ;
427
- add_fragment_sibling_local ( field_name) ;
428
+ add_fragment_sibling_local ( field_name, None ) ;
428
429
}
429
430
}
430
431
}
@@ -447,10 +448,11 @@ fn add_fragment_sibling_core<'tcx>(this: &MoveData<'tcx>,
447
448
parent : Rc < LoanPath < ' tcx > > ,
448
449
mc : mc:: MutabilityCategory ,
449
450
new_field_name : mc:: FieldName ,
450
- origin_lp : & Rc < LoanPath < ' tcx > > ) -> MovePathIndex {
451
+ origin_lp : & Rc < LoanPath < ' tcx > > ,
452
+ enum_variant_did : Option < ast:: DefId > ) -> MovePathIndex {
451
453
let opt_variant_did = match parent. kind {
452
454
LpDowncast ( _, variant_did) => Some ( variant_did) ,
453
- LpVar ( ..) | LpUpvar ( ..) | LpExtend ( ..) => None ,
455
+ LpVar ( ..) | LpUpvar ( ..) | LpExtend ( ..) => enum_variant_did ,
454
456
} ;
455
457
456
458
let loan_path_elem = LpInterior ( mc:: InteriorField ( new_field_name) ) ;
0 commit comments