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:
parent
d5a91f3114
commit
c3e71d83cd
1 changed files with 4 additions and 1 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue