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.rs | 11 |
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, ); |