Rollup merge of #121975 - davidtwco:issue-121757, r=petrochenkov
hir_analysis: enums return `None` in `find_field` Fixes #121757. Unnamed union fields with enums are checked for, but if `find_field` causes an ICE then the compiler won't get to that point.
This commit is contained in:
commit
f560806ae0
3 changed files with 76 additions and 1 deletions
|
@ -791,7 +791,12 @@ fn convert_enum_variant_types(tcx: TyCtxt<'_>, def_id: DefId) {
|
|||
}
|
||||
|
||||
fn find_field(tcx: TyCtxt<'_>, (def_id, ident): (DefId, Ident)) -> Option<FieldIdx> {
|
||||
tcx.adt_def(def_id).non_enum_variant().fields.iter_enumerated().find_map(|(idx, field)| {
|
||||
let adt = tcx.adt_def(def_id);
|
||||
if adt.is_enum() {
|
||||
return None;
|
||||
}
|
||||
|
||||
adt.non_enum_variant().fields.iter_enumerated().find_map(|(idx, field)| {
|
||||
if field.is_unnamed() {
|
||||
let field_ty = tcx.type_of(field.did).instantiate_identity();
|
||||
let adt_def = field_ty.ty_adt_def().expect("expect Adt for unnamed field");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue