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/expr.rs | 5 |
2 files changed, 5 insertions, 6 deletions
diff --git a/crates/hir_ty/src/infer.rs b/crates/hir_ty/src/infer.rs index 6dfe53902..9c385b845 100644 --- a/crates/hir_ty/src/infer.rs +++ b/crates/hir_ty/src/infer.rs | |||
@@ -802,7 +802,7 @@ mod diagnostics { | |||
802 | 802 | ||
803 | #[derive(Debug, PartialEq, Eq, Clone)] | 803 | #[derive(Debug, PartialEq, Eq, Clone)] |
804 | pub(super) enum InferenceDiagnostic { | 804 | pub(super) enum InferenceDiagnostic { |
805 | NoSuchField { expr: ExprId, field: usize }, | 805 | NoSuchField { expr: ExprId }, |
806 | BreakOutsideOfLoop { expr: ExprId }, | 806 | BreakOutsideOfLoop { expr: ExprId }, |
807 | } | 807 | } |
808 | 808 | ||
@@ -814,9 +814,9 @@ mod diagnostics { | |||
814 | sink: &mut DiagnosticSink, | 814 | sink: &mut DiagnosticSink, |
815 | ) { | 815 | ) { |
816 | match self { | 816 | match self { |
817 | InferenceDiagnostic::NoSuchField { expr, field } => { | 817 | InferenceDiagnostic::NoSuchField { expr } => { |
818 | let (_, source_map) = db.body_with_source_map(owner); | 818 | let (_, source_map) = db.body_with_source_map(owner); |
819 | let field = source_map.field_syntax(*expr, *field); | 819 | let field = source_map.field_syntax(*expr); |
820 | sink.push(NoSuchField { file: field.file_id, field: field.value }) | 820 | sink.push(NoSuchField { file: field.file_id, field: field.value }) |
821 | } | 821 | } |
822 | InferenceDiagnostic::BreakOutsideOfLoop { expr } => { | 822 | InferenceDiagnostic::BreakOutsideOfLoop { expr } => { |
diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 8c58a1b6c..f40dec17f 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs | |||
@@ -405,14 +405,13 @@ impl<'a> InferenceContext<'a> { | |||
405 | let substs = ty.substs().cloned().unwrap_or_else(Substs::empty); | 405 | let substs = ty.substs().cloned().unwrap_or_else(Substs::empty); |
406 | let field_types = def_id.map(|it| self.db.field_types(it)).unwrap_or_default(); | 406 | let field_types = def_id.map(|it| self.db.field_types(it)).unwrap_or_default(); |
407 | let variant_data = def_id.map(|it| variant_data(self.db.upcast(), it)); | 407 | let variant_data = def_id.map(|it| variant_data(self.db.upcast(), it)); |
408 | for (field_idx, field) in fields.iter().enumerate() { | 408 | for field in fields.iter() { |
409 | let field_def = | 409 | let field_def = |
410 | variant_data.as_ref().and_then(|it| match it.field(&field.name) { | 410 | variant_data.as_ref().and_then(|it| match it.field(&field.name) { |
411 | Some(local_id) => Some(FieldId { parent: def_id.unwrap(), local_id }), | 411 | Some(local_id) => Some(FieldId { parent: def_id.unwrap(), local_id }), |
412 | None => { | 412 | None => { |
413 | self.push_diagnostic(InferenceDiagnostic::NoSuchField { | 413 | self.push_diagnostic(InferenceDiagnostic::NoSuchField { |
414 | expr: tgt_expr, | 414 | expr: field.expr, |
415 | field: field_idx, | ||
416 | }); | 415 | }); |
417 | None | 416 | None |
418 | } | 417 | } |