aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/method_resolution.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-12-03 13:59:29 +0000
committerFlorian Diebold <[email protected]>2019-12-03 14:01:23 +0000
commite4add45951511f9afe348bf6066a724deb0d3ccf (patch)
tree0a357e2d3333a06e37f5cb8d6613733c1c0c78ac /crates/ra_hir_ty/src/method_resolution.rs
parentba4f7fa02f746e5bb3efdaa06c2b35beaa4e3440 (diff)
Fix #2467
The stand-alone `unify` requires that the type doesn't contain any type variables. So we can't share the code here for now (without more refactoring)...
Diffstat (limited to 'crates/ra_hir_ty/src/method_resolution.rs')
-rw-r--r--crates/ra_hir_ty/src/method_resolution.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/crates/ra_hir_ty/src/method_resolution.rs b/crates/ra_hir_ty/src/method_resolution.rs
index 21efb196a..7220d6e0a 100644
--- a/crates/ra_hir_ty/src/method_resolution.rs
+++ b/crates/ra_hir_ty/src/method_resolution.rs
@@ -437,12 +437,12 @@ fn is_valid_candidate(
437pub(crate) fn inherent_impl_substs( 437pub(crate) fn inherent_impl_substs(
438 db: &impl HirDatabase, 438 db: &impl HirDatabase,
439 impl_id: ImplId, 439 impl_id: ImplId,
440 self_ty: &Ty, 440 self_ty: &Canonical<Ty>,
441) -> Option<Substs> { 441) -> Option<Substs> {
442 let vars = Substs::build_for_def(db, impl_id).fill_with_bound_vars(0).build(); 442 let vars = Substs::build_for_def(db, impl_id).fill_with_bound_vars(0).build();
443 let self_ty_with_vars = db.impl_self_ty(impl_id).subst(&vars); 443 let self_ty_with_vars = db.impl_self_ty(impl_id).subst(&vars);
444 let self_ty_with_vars = Canonical { num_vars: vars.len(), value: &self_ty_with_vars }; 444 let self_ty_with_vars = Canonical { num_vars: vars.len(), value: self_ty_with_vars };
445 super::infer::unify(self_ty_with_vars, self_ty) 445 super::infer::unify(&self_ty_with_vars, self_ty)
446} 446}
447 447
448fn transform_receiver_ty( 448fn transform_receiver_ty(
@@ -455,7 +455,7 @@ fn transform_receiver_ty(
455 .push(self_ty.value.clone()) 455 .push(self_ty.value.clone())
456 .fill_with_unknown() 456 .fill_with_unknown()
457 .build(), 457 .build(),
458 hir_def::ContainerId::ImplId(impl_id) => inherent_impl_substs(db, impl_id, &self_ty.value)?, 458 hir_def::ContainerId::ImplId(impl_id) => inherent_impl_substs(db, impl_id, &self_ty)?,
459 hir_def::ContainerId::ModuleId(_) => unreachable!(), 459 hir_def::ContainerId::ModuleId(_) => unreachable!(),
460 }; 460 };
461 let sig = db.callable_item_signature(function_id.into()); 461 let sig = db.callable_item_signature(function_id.into());