about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/rust-analyzer/crates/ide/src/hover.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide/src/hover.rs b/src/tools/rust-analyzer/crates/ide/src/hover.rs
index 1431bd8ca29..6b461a62687 100644
--- a/src/tools/rust-analyzer/crates/ide/src/hover.rs
+++ b/src/tools/rust-analyzer/crates/ide/src/hover.rs
@@ -557,12 +557,16 @@ fn goto_type_action_for_def(
             .into_iter()
             .filter(|&it| Some(it.into()) != sized_trait)
             .for_each(|it| push_new_def(it.into()));
+    } else if let Definition::Function(function) = def {
+        walk_and_push_ty(db, &function.ret_type(db), &mut push_new_def);
+        for param in function.params_without_self(db) {
+            walk_and_push_ty(db, param.ty(), &mut push_new_def);
+        }
     } else {
         let ty = match def {
             Definition::Local(it) => it.ty(db),
             Definition::GenericParam(hir::GenericParam::ConstParam(it)) => it.ty(db),
             Definition::Field(field) => field.ty(db),
-            Definition::Function(function) => function.ret_type(db),
             _ => return HoverAction::goto_type_from_targets(db, targets, edition),
         };