make no-variant types a dedicated Variants variant
This commit is contained in:
parent
21de42bf8d
commit
e023590de4
53 changed files with 246 additions and 495 deletions
|
@ -216,7 +216,7 @@ impl EnumSizeOpt {
|
|||
};
|
||||
let layout = tcx.layout_of(typing_env.as_query_input(ty)).ok()?;
|
||||
let variants = match &layout.variants {
|
||||
Variants::Single { .. } => return None,
|
||||
Variants::Single { .. } | Variants::Empty => return None,
|
||||
Variants::Multiple { tag_encoding: TagEncoding::Niche { .. }, .. } => return None,
|
||||
|
||||
Variants::Multiple { variants, .. } if variants.len() <= 1 => return None,
|
||||
|
|
|
@ -54,11 +54,11 @@ fn variant_discriminants<'tcx>(
|
|||
tcx: TyCtxt<'tcx>,
|
||||
) -> FxHashSet<u128> {
|
||||
match &layout.variants {
|
||||
Variants::Single { index: None } => {
|
||||
Variants::Empty => {
|
||||
// Uninhabited, no valid discriminant.
|
||||
FxHashSet::default()
|
||||
}
|
||||
Variants::Single { index: Some(index) } => {
|
||||
Variants::Single { index } => {
|
||||
let mut res = FxHashSet::default();
|
||||
res.insert(
|
||||
ty.discriminant_for_variant(tcx, *index)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue