Variants::Single: do not use invalid VariantIdx for uninhabited enums
This commit is contained in:
parent
37e74596c0
commit
21de42bf8d
47 changed files with 549 additions and 281 deletions
|
@ -19,7 +19,7 @@ pub(crate) fn codegen_set_discriminant<'tcx>(
|
|||
}
|
||||
match layout.variants {
|
||||
Variants::Single { index } => {
|
||||
assert_eq!(index, variant_index);
|
||||
assert_eq!(index.unwrap(), variant_index);
|
||||
}
|
||||
Variants::Multiple {
|
||||
tag: _,
|
||||
|
@ -86,9 +86,10 @@ pub(crate) fn codegen_get_discriminant<'tcx>(
|
|||
|
||||
let (tag_scalar, tag_field, tag_encoding) = match &layout.variants {
|
||||
Variants::Single { index } => {
|
||||
let index = index.unwrap();
|
||||
let discr_val = layout
|
||||
.ty
|
||||
.discriminant_for_variant(fx.tcx, *index)
|
||||
.discriminant_for_variant(fx.tcx, index)
|
||||
.map_or(u128::from(index.as_u32()), |discr| discr.val);
|
||||
|
||||
let val = match dest_layout.ty.kind() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue