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.rs10
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,