1
Fork 0

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:
Scott McMurray 2023-03-28 23:32:25 -07:00
parent 10338571cf
commit 4abb455529
47 changed files with 127 additions and 104 deletions

View file

@ -16,6 +16,7 @@ use rustc_middle::ty::query::Providers;
use rustc_middle::ty::{self, TyCtxt};
use rustc_session::lint;
use rustc_span::symbol::{sym, Symbol};
use rustc_target::abi::FieldIdx;
use std::mem;
use crate::errors::{
@ -232,7 +233,7 @@ impl<'tcx> MarkSymbolVisitor<'tcx> {
if let PatKind::Wild = pat.kind {
continue;
}
self.insert_def_id(variant.fields[idx].did);
self.insert_def_id(variant.fields[FieldIdx::from_usize(idx)].did);
}
}