Skip to content

Commit 6bddae2

Browse files
committed
Auto merge of #134499 - jieyouxu:rollup-zmaveur, r=jieyouxu
Rollup of 7 pull requests Successful merges: - #133702 (Variants::Single: do not use invalid VariantIdx for uninhabited enums) - #134427 (ci: remove duplicate task definition) - #134432 (Fix intra doc links not generated inside footnote definitions) - #134437 (reduce compiler `Assemble` complexity) - #134474 (Forbid overwriting types in typeck) - #134477 (move lint_unused_mut into sub-fn) - #134491 (Some destructor/drop related tweaks) r? `@ghost` `@rustbot` modify labels: rollup
2 parents c6e1649 + b60f067 commit 6bddae2

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

crates/hir-ty/src/mir/eval.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -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,

crates/hir-ty/src/utils.rs

+1
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ pub(crate) fn detect_variant_from_bytes<'a>(
334334
e: EnumId,
335335
) -> Option<(EnumVariantId, &'a Layout)> {
336336
let (var_id, var_layout) = match &layout.variants {
337+
hir_def::layout::Variants::Empty => unreachable!(),
337338
hir_def::layout::Variants::Single { index } => {
338339
(db.enum_data(e).variants[index.0].0, layout)
339340
}

0 commit comments

Comments
 (0)