diff options
Diffstat (limited to 'crates/hir_ty/src/infer/pat.rs')
-rw-r--r-- | crates/hir_ty/src/infer/pat.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/hir_ty/src/infer/pat.rs b/crates/hir_ty/src/infer/pat.rs index 60b94a642..b15f4977d 100644 --- a/crates/hir_ty/src/infer/pat.rs +++ b/crates/hir_ty/src/infer/pat.rs | |||
@@ -10,7 +10,7 @@ use hir_def::{ | |||
10 | }; | 10 | }; |
11 | use hir_expand::name::Name; | 11 | use hir_expand::name::Name; |
12 | 12 | ||
13 | use super::{BindingMode, Expectation, InferenceContext}; | 13 | use super::{BindingMode, Expectation, InferenceContext, TypeMismatch}; |
14 | use crate::{ | 14 | use crate::{ |
15 | lower::lower_to_chalk_mutability, static_lifetime, Interner, Substitution, Ty, TyBuilder, | 15 | lower::lower_to_chalk_mutability, static_lifetime, Interner, Substitution, Ty, TyBuilder, |
16 | TyExt, TyKind, | 16 | TyExt, TyKind, |
@@ -266,7 +266,10 @@ impl<'a> InferenceContext<'a> { | |||
266 | // use a new type variable if we got error type here | 266 | // use a new type variable if we got error type here |
267 | let ty = self.insert_type_vars_shallow(ty); | 267 | let ty = self.insert_type_vars_shallow(ty); |
268 | if !self.unify(&ty, expected) { | 268 | if !self.unify(&ty, expected) { |
269 | // FIXME record mismatch, we need to change the type of self.type_mismatches for that | 269 | self.result.type_mismatches.insert( |
270 | pat.into(), | ||
271 | TypeMismatch { expected: expected.clone(), actual: ty.clone() }, | ||
272 | ); | ||
270 | } | 273 | } |
271 | let ty = self.resolve_ty_as_possible(ty); | 274 | let ty = self.resolve_ty_as_possible(ty); |
272 | self.write_pat_ty(pat, ty.clone()); | 275 | self.write_pat_ty(pat, ty.clone()); |