@@ -813,7 +813,7 @@ impl Evaluator<'_> {
813
813
ProjectionElem :: Field ( Either :: Left ( f) ) => {
814
814
let layout = self . layout ( & prev_ty) ?;
815
815
let variant_layout = match & layout. variants {
816
- Variants :: Single { .. } => & layout,
816
+ Variants :: Single { .. } | Variants :: Empty => & layout,
817
817
Variants :: Multiple { variants, .. } => {
818
818
& variants[ match f. parent {
819
819
hir_def:: VariantId :: EnumVariantId ( it) => {
@@ -1638,6 +1638,7 @@ impl Evaluator<'_> {
1638
1638
return Ok ( 0 ) ;
1639
1639
} ;
1640
1640
match & layout. variants {
1641
+ Variants :: Empty => unreachable ! ( ) ,
1641
1642
Variants :: Single { index } => {
1642
1643
let r = self . const_eval_discriminant ( self . db . enum_data ( e) . variants [ index. 0 ] . 0 ) ?;
1643
1644
Ok ( r)
@@ -1800,7 +1801,7 @@ impl Evaluator<'_> {
1800
1801
}
1801
1802
let layout = self . layout_adt ( adt, subst) ?;
1802
1803
Ok ( match & layout. variants {
1803
- Variants :: Single { .. } => ( layout. size . bytes_usize ( ) , layout, None ) ,
1804
+ Variants :: Single { .. } | Variants :: Empty => ( layout. size . bytes_usize ( ) , layout, None ) ,
1804
1805
Variants :: Multiple { variants, tag, tag_encoding, .. } => {
1805
1806
let enum_variant_id = match it {
1806
1807
VariantId :: EnumVariantId ( it) => it,
0 commit comments