aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/goto_definition.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api/src/goto_definition.rs')
-rw-r--r--crates/ra_ide_api/src/goto_definition.rs8
1 files changed, 3 insertions, 5 deletions
diff --git a/crates/ra_ide_api/src/goto_definition.rs b/crates/ra_ide_api/src/goto_definition.rs
index b1becca03..46bdde00d 100644
--- a/crates/ra_ide_api/src/goto_definition.rs
+++ b/crates/ra_ide_api/src/goto_definition.rs
@@ -63,13 +63,11 @@ pub(crate) fn reference_definition(
63 let infer_result = function.infer(db); 63 let infer_result = function.infer(db);
64 let syntax_mapping = function.body_syntax_mapping(db); 64 let syntax_mapping = function.body_syntax_mapping(db);
65 let expr = ast::Expr::cast(method_call.syntax()).unwrap(); 65 let expr = ast::Expr::cast(method_call.syntax()).unwrap();
66 if let Some(def_id) = syntax_mapping 66 if let Some(func) = syntax_mapping
67 .node_expr(expr) 67 .node_expr(expr)
68 .and_then(|it| infer_result.method_resolution(it)) 68 .and_then(|it| infer_result.method_resolution(it))
69 { 69 {
70 if let Some(target) = NavigationTarget::from_def(db, def_id.resolve(db)) { 70 return Exact(NavigationTarget::from_function(db, func));
71 return Exact(target);
72 }
73 }; 71 };
74 } 72 }
75 } 73 }
@@ -84,7 +82,7 @@ pub(crate) fn reference_definition(
84 { 82 {
85 let resolved = module.resolve_path(db, &path); 83 let resolved = module.resolve_path(db, &path);
86 if let Some(def_id) = resolved.take_types().or(resolved.take_values()) { 84 if let Some(def_id) = resolved.take_types().or(resolved.take_values()) {
87 if let Some(target) = NavigationTarget::from_def(db, def_id.resolve(db)) { 85 if let Some(target) = NavigationTarget::from_def(db, def_id) {
88 return Exact(target); 86 return Exact(target);
89 } 87 }
90 } 88 }