diff options
Diffstat (limited to 'crates/ra_ide_api/src/goto_definition.rs')
-rw-r--r-- | crates/ra_ide_api/src/goto_definition.rs | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/crates/ra_ide_api/src/goto_definition.rs b/crates/ra_ide_api/src/goto_definition.rs index 41a88314f..1f3fa6c57 100644 --- a/crates/ra_ide_api/src/goto_definition.rs +++ b/crates/ra_ide_api/src/goto_definition.rs | |||
@@ -10,7 +10,7 @@ use ra_syntax::{ | |||
10 | use crate::{ | 10 | use crate::{ |
11 | db::RootDatabase, | 11 | db::RootDatabase, |
12 | display::ShortLabel, | 12 | display::ShortLabel, |
13 | name_ref_kind::{classify_name_ref, NameRefKind::*}, | 13 | references::{classify_name_ref, NameKind::*}, |
14 | FilePosition, NavigationTarget, RangeInfo, | 14 | FilePosition, NavigationTarget, RangeInfo, |
15 | }; | 15 | }; |
16 | 16 | ||
@@ -54,13 +54,11 @@ pub(crate) fn reference_definition( | |||
54 | ) -> ReferenceResult { | 54 | ) -> ReferenceResult { |
55 | use self::ReferenceResult::*; | 55 | use self::ReferenceResult::*; |
56 | 56 | ||
57 | let analyzer = hir::SourceAnalyzer::new(db, file_id, name_ref.syntax(), None); | 57 | let name_kind = classify_name_ref(db, file_id, &name_ref).map(|d| d.kind); |
58 | 58 | match name_kind { | |
59 | match classify_name_ref(db, &analyzer, name_ref) { | ||
60 | Some(Macro(mac)) => return Exact(NavigationTarget::from_macro_def(db, mac)), | 59 | Some(Macro(mac)) => return Exact(NavigationTarget::from_macro_def(db, mac)), |
61 | Some(FieldAccess(field)) => return Exact(NavigationTarget::from_field(db, field)), | 60 | Some(Field(field)) => return Exact(NavigationTarget::from_field(db, field)), |
62 | Some(AssocItem(assoc)) => return Exact(NavigationTarget::from_assoc_item(db, assoc)), | 61 | Some(AssocItem(assoc)) => return Exact(NavigationTarget::from_assoc_item(db, assoc)), |
63 | Some(Method(func)) => return Exact(NavigationTarget::from_def_source(db, func)), | ||
64 | Some(Def(def)) => match NavigationTarget::from_def(db, def) { | 62 | Some(Def(def)) => match NavigationTarget::from_def(db, def) { |
65 | Some(nav) => return Exact(nav), | 63 | Some(nav) => return Exact(nav), |
66 | None => return Approximate(vec![]), | 64 | None => return Approximate(vec![]), |
@@ -70,7 +68,7 @@ pub(crate) fn reference_definition( | |||
70 | return Exact(NavigationTarget::from_adt_def(db, def_id)); | 68 | return Exact(NavigationTarget::from_adt_def(db, def_id)); |
71 | } | 69 | } |
72 | } | 70 | } |
73 | Some(Pat(pat)) => return Exact(NavigationTarget::from_pat(db, file_id, pat)), | 71 | Some(Pat((_, pat))) => return Exact(NavigationTarget::from_pat(db, file_id, pat)), |
74 | Some(SelfParam(par)) => return Exact(NavigationTarget::from_self_param(file_id, par)), | 72 | Some(SelfParam(par)) => return Exact(NavigationTarget::from_self_param(file_id, par)), |
75 | Some(GenericParam(_)) => { | 73 | Some(GenericParam(_)) => { |
76 | // FIXME: go to the generic param def | 74 | // FIXME: go to the generic param def |