diff options
author | Florian Diebold <[email protected]> | 2020-01-31 15:52:43 +0000 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2020-02-07 17:28:10 +0000 |
commit | ed25cf70d5e0df9c7a33deb503ea14c2d97bd7a7 (patch) | |
tree | bc6e8620244d64beed8f1a9ce9059e5dfd2a0fbe /crates/ra_hir_ty/src/infer/expr.rs | |
parent | f8b7b64bce772f21124b4790538ca97418cc23ca (diff) |
Change Ty::Param to contain param ID
Diffstat (limited to 'crates/ra_hir_ty/src/infer/expr.rs')
-rw-r--r-- | crates/ra_hir_ty/src/infer/expr.rs | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/crates/ra_hir_ty/src/infer/expr.rs b/crates/ra_hir_ty/src/infer/expr.rs index e1fdb356d..8b8378499 100644 --- a/crates/ra_hir_ty/src/infer/expr.rs +++ b/crates/ra_hir_ty/src/infer/expr.rs | |||
@@ -236,8 +236,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
236 | self.result.record_field_resolutions.insert(field.expr, field_def); | 236 | self.result.record_field_resolutions.insert(field.expr, field_def); |
237 | } | 237 | } |
238 | let field_ty = field_def | 238 | let field_ty = field_def |
239 | .map_or(Ty::Unknown, |it| field_types[it.local_id].clone()) | 239 | .map_or(Ty::Unknown, |it| field_types[it.local_id].clone().subst(&substs)); |
240 | .subst(&substs); | ||
241 | self.infer_expr_coerce(field.expr, &Expectation::has_type(field_ty)); | 240 | self.infer_expr_coerce(field.expr, &Expectation::has_type(field_ty)); |
242 | } | 241 | } |
243 | if let Some(expr) = spread { | 242 | if let Some(expr) = spread { |
@@ -686,7 +685,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
686 | if let TypeCtor::FnDef(def) = a_ty.ctor { | 685 | if let TypeCtor::FnDef(def) = a_ty.ctor { |
687 | let generic_predicates = self.db.generic_predicates(def.into()); | 686 | let generic_predicates = self.db.generic_predicates(def.into()); |
688 | for predicate in generic_predicates.iter() { | 687 | for predicate in generic_predicates.iter() { |
689 | let predicate = predicate.clone().subst(&a_ty.parameters); | 688 | let predicate = predicate.clone().subst_type_params(self.db, def.into(), &a_ty.parameters); |
690 | if let Some(obligation) = Obligation::from_predicate(predicate) { | 689 | if let Some(obligation) = Obligation::from_predicate(predicate) { |
691 | self.obligations.push(obligation); | 690 | self.obligations.push(obligation); |
692 | } | 691 | } |