mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-04 01:42:54 +03:00
Fix a variant index and variant discriminant confusion
Previously for enums using the `Variants::Single` layout, the variant
index was being confused with its discriminant. For example, in the case
of `enum E { A = 1 }`.
Use `discriminant_for_variant` to avoid the issue.
This commit is contained in:
@@ -55,7 +55,10 @@ fn variant_discriminants<'tcx>(
|
||||
match &layout.variants {
|
||||
Variants::Single { index } => {
|
||||
let mut res = FxHashSet::default();
|
||||
res.insert(index.as_u32() as u128);
|
||||
res.insert(
|
||||
ty.discriminant_for_variant(tcx, *index)
|
||||
.map_or(index.as_u32() as u128, |discr| discr.val),
|
||||
);
|
||||
res
|
||||
}
|
||||
Variants::Multiple { variants, .. } => variants
|
||||
|
||||
Reference in New Issue
Block a user