diff options
Diffstat (limited to 'crates/ra_hir/src/ty/infer.rs')
-rw-r--r-- | crates/ra_hir/src/ty/infer.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs index 2eb73726e..c9a5bc7a1 100644 --- a/crates/ra_hir/src/ty/infer.rs +++ b/crates/ra_hir/src/ty/infer.rs | |||
@@ -725,7 +725,8 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
725 | let callee_ty = self.infer_expr(*callee, &Expectation::none()); | 725 | let callee_ty = self.infer_expr(*callee, &Expectation::none()); |
726 | let (param_tys, ret_ty) = match &callee_ty { | 726 | let (param_tys, ret_ty) = match &callee_ty { |
727 | Ty::FnPtr(sig) => (sig.params().to_vec(), sig.ret().clone()), | 727 | Ty::FnPtr(sig) => (sig.params().to_vec(), sig.ret().clone()), |
728 | Ty::FnDef { substs, sig, .. } => { | 728 | Ty::FnDef { substs, def, .. } => { |
729 | let sig = self.db.callable_item_signature(*def); | ||
729 | let ret_ty = sig.ret().clone().subst(&substs); | 730 | let ret_ty = sig.ret().clone().subst(&substs); |
730 | let param_tys = | 731 | let param_tys = |
731 | sig.params().iter().map(|ty| ty.clone().subst(&substs)).collect(); | 732 | sig.params().iter().map(|ty| ty.clone().subst(&substs)).collect(); |
@@ -768,7 +769,8 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
768 | (Ty::Unknown, Vec::new(), sig.ret().clone()) | 769 | (Ty::Unknown, Vec::new(), sig.ret().clone()) |
769 | } | 770 | } |
770 | } | 771 | } |
771 | Ty::FnDef { substs, sig, .. } => { | 772 | Ty::FnDef { substs, def, .. } => { |
773 | let sig = self.db.callable_item_signature(*def); | ||
772 | let ret_ty = sig.ret().clone().subst(&substs); | 774 | let ret_ty = sig.ret().clone().subst(&substs); |
773 | 775 | ||
774 | if !sig.params().is_empty() { | 776 | if !sig.params().is_empty() { |