diff options
Diffstat (limited to 'crates/hir_ty')
| -rw-r--r-- | crates/hir_ty/src/infer.rs | 6 | ||||
| -rw-r--r-- | crates/hir_ty/src/infer/pat.rs | 6 |
2 files changed, 1 insertions, 11 deletions
diff --git a/crates/hir_ty/src/infer.rs b/crates/hir_ty/src/infer.rs index c63878e7a..efe9198cc 100644 --- a/crates/hir_ty/src/infer.rs +++ b/crates/hir_ty/src/infer.rs | |||
| @@ -131,8 +131,7 @@ pub struct InferenceResult { | |||
| 131 | method_resolutions: FxHashMap<ExprId, FunctionId>, | 131 | method_resolutions: FxHashMap<ExprId, FunctionId>, |
| 132 | /// For each field access expr, records the field it resolves to. | 132 | /// For each field access expr, records the field it resolves to. |
| 133 | field_resolutions: FxHashMap<ExprId, FieldId>, | 133 | field_resolutions: FxHashMap<ExprId, FieldId>, |
| 134 | record_pat_field_resolutions: FxHashMap<PatId, FieldId>, | 134 | /// For each struct literal or pattern, records the variant it resolves to. |
| 135 | /// For each struct literal, records the variant it resolves to. | ||
| 136 | variant_resolutions: FxHashMap<ExprOrPatId, VariantId>, | 135 | variant_resolutions: FxHashMap<ExprOrPatId, VariantId>, |
| 137 | /// For each associated item record what it resolves to | 136 | /// For each associated item record what it resolves to |
| 138 | assoc_resolutions: FxHashMap<ExprOrPatId, AssocItemId>, | 137 | assoc_resolutions: FxHashMap<ExprOrPatId, AssocItemId>, |
| @@ -151,9 +150,6 @@ impl InferenceResult { | |||
| 151 | pub fn field_resolution(&self, expr: ExprId) -> Option<FieldId> { | 150 | pub fn field_resolution(&self, expr: ExprId) -> Option<FieldId> { |
| 152 | self.field_resolutions.get(&expr).copied() | 151 | self.field_resolutions.get(&expr).copied() |
| 153 | } | 152 | } |
| 154 | pub fn record_pat_field_resolution(&self, pat: PatId) -> Option<FieldId> { | ||
| 155 | self.record_pat_field_resolutions.get(&pat).copied() | ||
| 156 | } | ||
| 157 | pub fn variant_resolution_for_expr(&self, id: ExprId) -> Option<VariantId> { | 153 | pub fn variant_resolution_for_expr(&self, id: ExprId) -> Option<VariantId> { |
| 158 | self.variant_resolutions.get(&id.into()).copied() | 154 | self.variant_resolutions.get(&id.into()).copied() |
| 159 | } | 155 | } |
diff --git a/crates/hir_ty/src/infer/pat.rs b/crates/hir_ty/src/infer/pat.rs index 942f70edf..e4813c87c 100644 --- a/crates/hir_ty/src/infer/pat.rs +++ b/crates/hir_ty/src/infer/pat.rs | |||
| @@ -7,7 +7,6 @@ use chalk_ir::Mutability; | |||
| 7 | use hir_def::{ | 7 | use hir_def::{ |
| 8 | expr::{BindingAnnotation, Expr, Literal, Pat, PatId, RecordFieldPat}, | 8 | expr::{BindingAnnotation, Expr, Literal, Pat, PatId, RecordFieldPat}, |
| 9 | path::Path, | 9 | path::Path, |
| 10 | FieldId, | ||
| 11 | }; | 10 | }; |
| 12 | use hir_expand::name::Name; | 11 | use hir_expand::name::Name; |
| 13 | 12 | ||
| @@ -80,11 +79,6 @@ impl<'a> InferenceContext<'a> { | |||
| 80 | let field_tys = def.map(|it| self.db.field_types(it)).unwrap_or_default(); | 79 | let field_tys = def.map(|it| self.db.field_types(it)).unwrap_or_default(); |
| 81 | for subpat in subpats { | 80 | for subpat in subpats { |
| 82 | let matching_field = var_data.as_ref().and_then(|it| it.field(&subpat.name)); | 81 | let matching_field = var_data.as_ref().and_then(|it| it.field(&subpat.name)); |
| 83 | if let Some(local_id) = matching_field { | ||
| 84 | let field_def = FieldId { parent: def.unwrap(), local_id }; | ||
| 85 | self.result.record_pat_field_resolutions.insert(subpat.pat, field_def); | ||
| 86 | } | ||
| 87 | |||
| 88 | let expected_ty = matching_field.map_or(self.err_ty(), |field| { | 82 | let expected_ty = matching_field.map_or(self.err_ty(), |field| { |
| 89 | field_tys[field].clone().substitute(&Interner, &substs) | 83 | field_tys[field].clone().substitute(&Interner, &substs) |
| 90 | }); | 84 | }); |
