Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/expr.rs')
-rw-r--r--crates/hir-ty/src/infer/expr.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs
index 8b3ec1ff2a..b91f32b09e 100644
--- a/crates/hir-ty/src/infer/expr.rs
+++ b/crates/hir-ty/src/infer/expr.rs
@@ -1746,13 +1746,17 @@ impl InferenceContext<'_> {
});
}
TyKind::Adt(AdtId(hir_def::AdtId::StructId(s)), parameters) => {
- let local_id = self.db.struct_data(*s).variant_data.field(name)?;
- let field = FieldId { parent: (*s).into(), local_id };
+ let vd = &self.db.struct_data(*s).variant_data;
+ let local_id = vd.field(name)?;
+ let has_default = vd.fields()[local_id].has_default;
+ let field = FieldId { parent: (*s).into(), local_id, has_default };
(field, parameters.clone())
}
TyKind::Adt(AdtId(hir_def::AdtId::UnionId(u)), parameters) => {
- let local_id = self.db.union_data(*u).variant_data.field(name)?;
- let field = FieldId { parent: (*u).into(), local_id };
+ let vd = &self.db.union_data(*u).variant_data;
+ let local_id = vd.field(name)?;
+ let has_default = vd.fields()[local_id].has_default;
+ let field = FieldId { parent: (*u).into(), local_id, has_default };
(field, parameters.clone())
}
_ => return None,