about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2024-12-01 13:12:43 +0100
committerRalf Jung <post@ralfj.de>2024-12-18 11:00:21 +0100
commit2d32e43d38902a548d8700c4e1816f3d57e86f22 (patch)
treed2f7efee49d68cf5648c269405a58a562f3135a1
parent4dd8941d3f2819657ff380637c8072d66991237d (diff)
downloadrust-2d32e43d38902a548d8700c4e1816f3d57e86f22.tar.gz
rust-2d32e43d38902a548d8700c4e1816f3d57e86f22.zip
Variants::Single: do not use invalid VariantIdx for uninhabited enums
-rw-r--r--src/discriminant.rs5
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() {