@@ -813,7 +813,7 @@ impl Evaluator<'_> {
813813 ProjectionElem :: Field ( Either :: Left ( f) ) => {
814814 let layout = self . layout ( & prev_ty) ?;
815815 let variant_layout = match & layout. variants {
816- Variants :: Single { .. } => & layout,
816+ Variants :: Single { .. } | Variants :: Empty => & layout,
817817 Variants :: Multiple { variants, .. } => {
818818 & variants[ match f. parent {
819819 hir_def:: VariantId :: EnumVariantId ( it) => {
@@ -1638,6 +1638,7 @@ impl Evaluator<'_> {
16381638 return Ok ( 0 ) ;
16391639 } ;
16401640 match & layout. variants {
1641+ Variants :: Empty => unreachable ! ( ) ,
16411642 Variants :: Single { index } => {
16421643 let r = self . const_eval_discriminant ( self . db . enum_data ( e) . variants [ index. 0 ] . 0 ) ?;
16431644 Ok ( r)
@@ -1800,7 +1801,7 @@ impl Evaluator<'_> {
18001801 }
18011802 let layout = self . layout_adt ( adt, subst) ?;
18021803 Ok ( match & layout. variants {
1803- Variants :: Single { .. } => ( layout. size . bytes_usize ( ) , layout, None ) ,
1804+ Variants :: Single { .. } | Variants :: Empty => ( layout. size . bytes_usize ( ) , layout, None ) ,
18041805 Variants :: Multiple { variants, tag, tag_encoding, .. } => {
18051806 let enum_variant_id = match it {
18061807 VariantId :: EnumVariantId ( it) => it,
0 commit comments