Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/mir/lower/pattern_matching.rs')
| -rw-r--r-- | crates/hir-ty/src/mir/lower/pattern_matching.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/crates/hir-ty/src/mir/lower/pattern_matching.rs b/crates/hir-ty/src/mir/lower/pattern_matching.rs index 2ffea34c85..43e6eb8898 100644 --- a/crates/hir-ty/src/mir/lower/pattern_matching.rs +++ b/crates/hir-ty/src/mir/lower/pattern_matching.rs @@ -632,10 +632,12 @@ impl MirLowerCtx<'_> { .map(|x| { let field_id = variant_data.field(&x.name).ok_or(MirLowerError::UnresolvedField)?; + let has_default = variant_data.fields()[field_id].has_default; Ok(( PlaceElem::Field(Either::Left(FieldId { parent: v, local_id: field_id, + has_default, })), x.pat, )) @@ -644,8 +646,12 @@ impl MirLowerCtx<'_> { self.pattern_match_adt(current, current_else, it.into_iter(), cond_place, mode)? } AdtPatternShape::Tuple { args, ellipsis } => { - let fields = variant_data.fields().iter().map(|(x, _)| { - PlaceElem::Field(Either::Left(FieldId { parent: v, local_id: x })) + let fields = variant_data.fields().iter().map(|(x, d)| { + PlaceElem::Field(Either::Left(FieldId { + parent: v, + local_id: x, + has_default: d.has_default, + })) }); self.pattern_match_tuple_like( current, |