From e8a63e43b17da7a3b0a60b354a8eb7bb0377a709 Mon Sep 17 00:00:00 2001 From: 1hakusai1 <1hakusai1@gmail.com> Date: Thu, 16 Jan 2025 10:00:30 +0900 Subject: [PATCH] Use resolve_method_call_as_callable to handle function types --- crates/ide/src/goto_definition.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/ide/src/goto_definition.rs b/crates/ide/src/goto_definition.rs index 88b8a9f796..112faa7a65 100644 --- a/crates/ide/src/goto_definition.rs +++ b/crates/ide/src/goto_definition.rs @@ -145,8 +145,9 @@ fn find_definition_for_known_blanket_dual_impls( // - return_type is B (type of b) // We will find the definition of B::from(a: A). let method_call = ast::MethodCallExpr::cast(original_token.parent()?.parent()?)?; - let receiver_type = sema.type_of_expr(&method_call.receiver()?)?.adjusted(); - let return_type = sema.type_of_expr(&method_call.clone().into())?.original(); + let callable = sema.resolve_method_call_as_callable(&method_call)?; + let (_, receiver_type) = callable.receiver_param(db)?; + let return_type = callable.return_type(); let (search_method, search_trait, return_type) = match method_call.name_ref()?.text().as_str() { "into" => ("from", FamousDefs(sema, krate).core_convert_From()?, return_type),