diff options
| author | DianQK <dianqk@dianqk.net> | 2024-02-14 12:09:28 +0800 |
|---|---|---|
| committer | DianQK <dianqk@dianqk.net> | 2024-03-07 22:58:51 +0800 |
| commit | 3d7f8b4e5b650efc628de9bf4bd5246d3493d261 (patch) | |
| tree | a549fd0c67ac6dc0e3291d130211f92c2804ea66 /compiler/rustc_mir_transform | |
| parent | 08ae8380ce75b4a19c4a7bfa33eac8776daef532 (diff) | |
| download | rust-3d7f8b4e5b650efc628de9bf4bd5246d3493d261.tar.gz rust-3d7f8b4e5b650efc628de9bf4bd5246d3493d261.zip | |
Get all variants to eliminate the default branching if we cannot get the layout of type
Diffstat (limited to 'compiler/rustc_mir_transform')
| -rw-r--r-- | compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs b/compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs index d3408d4882f..0ab60259732 100644 --- a/compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs +++ b/compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs @@ -95,6 +95,12 @@ impl<'tcx> MirPass<'tcx> for UninhabitedEnumBranching { let mut allowed_variants = if let Ok(layout) = layout { variant_discriminants(&layout, discriminant_ty, tcx) + } else if let Some(variant_range) = discriminant_ty.variant_range(tcx) { + variant_range + .map(|variant| { + discriminant_ty.discriminant_for_variant(tcx, variant).unwrap().val + }) + .collect() } else { continue; }; |
