diff options
| author | Ralf Jung <post@ralfj.de> | 2024-12-01 13:12:43 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2024-12-18 11:00:21 +0100 |
| commit | 2d32e43d38902a548d8700c4e1816f3d57e86f22 (patch) | |
| tree | d2f7efee49d68cf5648c269405a58a562f3135a1 | |
| parent | 4dd8941d3f2819657ff380637c8072d66991237d (diff) | |
| download | rust-2d32e43d38902a548d8700c4e1816f3d57e86f22.tar.gz rust-2d32e43d38902a548d8700c4e1816f3d57e86f22.zip | |
Variants::Single: do not use invalid VariantIdx for uninhabited enums
| -rw-r--r-- | src/discriminant.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/discriminant.rs b/src/discriminant.rs index 45794a42665..055063c876f 100644 --- a/src/discriminant.rs +++ b/src/discriminant.rs @@ -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() { |
