Auto merge of #109762 - scottmcm:variantdef-indexvec, r=WaffleLapkin
Update `ty::VariantDef` to use `IndexVec<FieldIdx, FieldDef>` And while doing the updates for that, also uses `FieldIdx` in `ProjectionKind::Field` and `TypeckResults::field_indices`. There's more places that could use it (like `rustc_const_eval` and `LayoutS`), but I tried to keep this PR from exploding to *even more* places. Part 2/? of https://github.com/rust-lang/compiler-team/issues/606
This commit is contained in:
commit
eb3e9c1f45
47 changed files with 127 additions and 104 deletions
|
@ -92,13 +92,14 @@ pub struct ElaborateBoxDerefs;
|
|||
impl<'tcx> MirPass<'tcx> for ElaborateBoxDerefs {
|
||||
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
|
||||
if let Some(def_id) = tcx.lang_items().owned_box() {
|
||||
let unique_did = tcx.adt_def(def_id).non_enum_variant().fields[0].did;
|
||||
let unique_did =
|
||||
tcx.adt_def(def_id).non_enum_variant().fields[FieldIdx::from_u32(0)].did;
|
||||
|
||||
let Some(nonnull_def) = tcx.type_of(unique_did).subst_identity().ty_adt_def() else {
|
||||
span_bug!(tcx.def_span(unique_did), "expected Box to contain Unique")
|
||||
};
|
||||
|
||||
let nonnull_did = nonnull_def.non_enum_variant().fields[0].did;
|
||||
let nonnull_did = nonnull_def.non_enum_variant().fields[FieldIdx::from_u32(0)].did;
|
||||
|
||||
let patch = MirPatch::new(body);
|
||||
|
||||
|
|
|
@ -907,7 +907,7 @@ impl<'tcx> Visitor<'tcx> for CostChecker<'_, 'tcx> {
|
|||
}
|
||||
ty::Adt(adt_def, substs) => {
|
||||
let var = parent_ty.variant_index.unwrap_or(FIRST_VARIANT);
|
||||
let Some(field) = adt_def.variant(var).fields.get(f.as_usize()) else {
|
||||
let Some(field) = adt_def.variant(var).fields.get(f) else {
|
||||
self.validation = Err("malformed MIR");
|
||||
return;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue