Unnamed repository; edit this file 'description' to name the repository.
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
| -rw-r--r-- | crates/hir-ty/src/mir/eval.rs | 5 | ||||
| -rw-r--r-- | crates/hir-ty/src/utils.rs | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/crates/hir-ty/src/mir/eval.rs b/crates/hir-ty/src/mir/eval.rs index d7029651fc..e3072d6ee7 100644 --- a/crates/hir-ty/src/mir/eval.rs +++ b/crates/hir-ty/src/mir/eval.rs @@ -813,7 +813,7 @@ impl Evaluator<'_> { ProjectionElem::Field(Either::Left(f)) => { let layout = self.layout(&prev_ty)?; let variant_layout = match &layout.variants { - Variants::Single { .. } => &layout, + Variants::Single { .. } | Variants::Empty => &layout, Variants::Multiple { variants, .. } => { &variants[match f.parent { hir_def::VariantId::EnumVariantId(it) => { @@ -1638,6 +1638,7 @@ impl Evaluator<'_> { return Ok(0); }; match &layout.variants { + Variants::Empty => unreachable!(), Variants::Single { index } => { let r = self.const_eval_discriminant(self.db.enum_data(e).variants[index.0].0)?; Ok(r) @@ -1800,7 +1801,7 @@ impl Evaluator<'_> { } let layout = self.layout_adt(adt, subst)?; Ok(match &layout.variants { - Variants::Single { .. } => (layout.size.bytes_usize(), layout, None), + Variants::Single { .. } | Variants::Empty => (layout.size.bytes_usize(), layout, None), Variants::Multiple { variants, tag, tag_encoding, .. } => { let enum_variant_id = match it { VariantId::EnumVariantId(it) => it, diff --git a/crates/hir-ty/src/utils.rs b/crates/hir-ty/src/utils.rs index 06719b09f7..42e7edaf0f 100644 --- a/crates/hir-ty/src/utils.rs +++ b/crates/hir-ty/src/utils.rs @@ -334,6 +334,7 @@ pub(crate) fn detect_variant_from_bytes<'a>( e: EnumId, ) -> Option<(EnumVariantId, &'a Layout)> { let (var_id, var_layout) = match &layout.variants { + hir_def::layout::Variants::Empty => unreachable!(), hir_def::layout::Variants::Single { index } => { (db.enum_data(e).variants[index.0].0, layout) } |