Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #2519 from rust-lang/rustc-pull
Rustc pull update
Tshepang Mbambo 9 months ago
parent 84010e2 · parent c7334d5 · commit ce2021f
-rw-r--r--crates/hir-ty/src/layout/adt.rs16
1 files changed, 3 insertions, 13 deletions
diff --git a/crates/hir-ty/src/layout/adt.rs b/crates/hir-ty/src/layout/adt.rs
index 236f316366..372a9dfc43 100644
--- a/crates/hir-ty/src/layout/adt.rs
+++ b/crates/hir-ty/src/layout/adt.rs
@@ -3,9 +3,9 @@
use std::{cmp, ops::Bound};
use hir_def::{
- AdtId, VariantId,
layout::{Integer, ReprOptions, TargetDataLayout},
signatures::{StructFlags, VariantFields},
+ AdtId, VariantId,
};
use intern::sym;
use rustc_index::IndexVec;
@@ -13,9 +13,9 @@ use smallvec::SmallVec;
use triomphe::Arc;
use crate::{
- Substitution, TraitEnvironment,
db::HirDatabase,
- layout::{Layout, LayoutError, field_ty},
+ layout::{field_ty, Layout, LayoutError},
+ Substitution, TraitEnvironment,
};
use super::LayoutCx;
@@ -85,16 +85,6 @@ pub fn layout_of_adt_query(
let d = db.const_eval_discriminant(e.enum_variants(db).variants[id.0].0).ok()?;
Some((id, d))
}),
- // FIXME: The current code for niche-filling relies on variant indices
- // instead of actual discriminants, so enums with
- // explicit discriminants (RFC #2363) would misbehave and we should disable
- // niche optimization for them.
- // The code that do it in rustc:
- // repr.inhibit_enum_layout_opt() || def
- // .variants()
- // .iter_enumerated()
- // .any(|(i, v)| v.discr != ty::VariantDiscr::Relative(i.as_u32()))
- repr.inhibit_enum_layout_opt(),
!matches!(def, AdtId::EnumId(..))
&& variants
.iter()