Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/mir/lower.rs')
-rw-r--r--crates/hir-ty/src/mir/lower.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/crates/hir-ty/src/mir/lower.rs b/crates/hir-ty/src/mir/lower.rs
index 5d89ebd4ef..b254bc8e54 100644
--- a/crates/hir-ty/src/mir/lower.rs
+++ b/crates/hir-ty/src/mir/lower.rs
@@ -870,12 +870,15 @@ impl<'ctx> MirLowerCtx<'ctx> {
.map(|(i, it)| match it {
Some(it) => it,
None => {
+ let local_id =
+ LocalFieldId::from_raw(RawIdx::from(i as u32));
+ let has_default =
+ variant_data.fields()[local_id].has_default;
let p = sp.project(
ProjectionElem::Field(Either::Left(FieldId {
parent: variant_id,
- local_id: LocalFieldId::from_raw(RawIdx::from(
- i as u32,
- )),
+ local_id,
+ has_default,
})),
&mut self.result.projection_store,
);
@@ -897,10 +900,12 @@ impl<'ctx> MirLowerCtx<'ctx> {
};
let local_id =
variant_data.field(name).ok_or(MirLowerError::UnresolvedField)?;
+ let has_default = variant_data.fields()[local_id].has_default;
let place = place.project(
PlaceElem::Field(Either::Left(FieldId {
parent: union_id.into(),
local_id,
+ has_default,
})),
&mut self.result.projection_store,
);