aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide')
-rw-r--r--crates/ra_ide/src/goto_definition.rs1
-rw-r--r--crates/ra_ide/src/hover.rs5
-rw-r--r--crates/ra_ide/src/references.rs1
-rw-r--r--crates/ra_ide/src/references/classify.rs28
-rw-r--r--crates/ra_ide/src/syntax_highlighting.rs3
5 files changed, 18 insertions, 20 deletions
diff --git a/crates/ra_ide/src/goto_definition.rs b/crates/ra_ide/src/goto_definition.rs
index e9329a72c..080cc302b 100644
--- a/crates/ra_ide/src/goto_definition.rs
+++ b/crates/ra_ide/src/goto_definition.rs
@@ -78,7 +78,6 @@ pub(crate) fn reference_definition(
78 Some(Macro(it)) => return Exact(it.to_nav(sb.db)), 78 Some(Macro(it)) => return Exact(it.to_nav(sb.db)),
79 Some(Field(it)) => return Exact(it.to_nav(sb.db)), 79 Some(Field(it)) => return Exact(it.to_nav(sb.db)),
80 Some(TypeParam(it)) => return Exact(it.to_nav(sb.db)), 80 Some(TypeParam(it)) => return Exact(it.to_nav(sb.db)),
81 Some(AssocItem(it)) => return Exact(it.to_nav(sb.db)),
82 Some(Local(it)) => return Exact(it.to_nav(sb.db)), 81 Some(Local(it)) => return Exact(it.to_nav(sb.db)),
83 Some(Def(def)) => match NavigationTarget::from_def(sb.db, def) { 82 Some(Def(def)) => match NavigationTarget::from_def(sb.db, def) {
84 Some(nav) => return Exact(nav), 83 Some(nav) => return Exact(nav),
diff --git a/crates/ra_ide/src/hover.rs b/crates/ra_ide/src/hover.rs
index 315b88190..ab3f513f2 100644
--- a/crates/ra_ide/src/hover.rs
+++ b/crates/ra_ide/src/hover.rs
@@ -105,11 +105,6 @@ fn hover_text_from_name_kind(db: &RootDatabase, name_kind: NameKind) -> Option<S
105 _ => None, 105 _ => None,
106 } 106 }
107 } 107 }
108 AssocItem(it) => match it {
109 hir::AssocItem::Function(it) => from_def_source(db, it),
110 hir::AssocItem::Const(it) => from_def_source(db, it),
111 hir::AssocItem::TypeAlias(it) => from_def_source(db, it),
112 },
113 Def(it) => match it { 108 Def(it) => match it {
114 hir::ModuleDef::Module(it) => match it.definition_source(db).value { 109 hir::ModuleDef::Module(it) => match it.definition_source(db).value {
115 hir::ModuleSource::Module(it) => { 110 hir::ModuleSource::Module(it) => {
diff --git a/crates/ra_ide/src/references.rs b/crates/ra_ide/src/references.rs
index c215040f4..612ed84b7 100644
--- a/crates/ra_ide/src/references.rs
+++ b/crates/ra_ide/src/references.rs
@@ -128,7 +128,6 @@ pub(crate) fn find_all_refs(
128 let declaration = match def.kind { 128 let declaration = match def.kind {
129 NameKind::Macro(mac) => mac.to_nav(db), 129 NameKind::Macro(mac) => mac.to_nav(db),
130 NameKind::Field(field) => field.to_nav(db), 130 NameKind::Field(field) => field.to_nav(db),
131 NameKind::AssocItem(assoc) => assoc.to_nav(db),
132 NameKind::Def(def) => NavigationTarget::from_def(db, def)?, 131 NameKind::Def(def) => NavigationTarget::from_def(db, def)?,
133 NameKind::SelfType(imp) => imp.to_nav(db), 132 NameKind::SelfType(imp) => imp.to_nav(db),
134 NameKind::Local(local) => local.to_nav(db), 133 NameKind::Local(local) => local.to_nav(db),
diff --git a/crates/ra_ide/src/references/classify.rs b/crates/ra_ide/src/references/classify.rs
index 0326fd379..d0f03d8a8 100644
--- a/crates/ra_ide/src/references/classify.rs
+++ b/crates/ra_ide/src/references/classify.rs
@@ -8,7 +8,7 @@ use test_utils::tested_by;
8use super::{NameDefinition, NameKind}; 8use super::{NameDefinition, NameKind};
9use ra_ide_db::RootDatabase; 9use ra_ide_db::RootDatabase;
10 10
11pub use ra_ide_db::defs::{classify_name, from_assoc_item, from_module_def, from_struct_field}; 11pub use ra_ide_db::defs::{classify_name, from_module_def, from_struct_field};
12 12
13pub(crate) fn classify_name_ref( 13pub(crate) fn classify_name_ref(
14 sb: &mut SourceBinder<RootDatabase>, 14 sb: &mut SourceBinder<RootDatabase>,
@@ -22,7 +22,7 @@ pub(crate) fn classify_name_ref(
22 if let Some(method_call) = ast::MethodCallExpr::cast(parent.clone()) { 22 if let Some(method_call) = ast::MethodCallExpr::cast(parent.clone()) {
23 tested_by!(goto_def_for_methods); 23 tested_by!(goto_def_for_methods);
24 if let Some(func) = analyzer.resolve_method_call(&method_call) { 24 if let Some(func) = analyzer.resolve_method_call(&method_call) {
25 return Some(from_assoc_item(sb.db, func.into())); 25 return Some(from_module_def(sb.db, func.into(), None));
26 } 26 }
27 } 27 }
28 28
@@ -57,27 +57,35 @@ pub(crate) fn classify_name_ref(
57 57
58 let path = name_ref.value.syntax().ancestors().find_map(ast::Path::cast)?; 58 let path = name_ref.value.syntax().ancestors().find_map(ast::Path::cast)?;
59 let resolved = analyzer.resolve_path(sb.db, &path)?; 59 let resolved = analyzer.resolve_path(sb.db, &path)?;
60 match resolved { 60 let res = match resolved {
61 PathResolution::Def(def) => Some(from_module_def(sb.db, def, Some(container))), 61 PathResolution::Def(def) => from_module_def(sb.db, def, Some(container)),
62 PathResolution::AssocItem(item) => Some(from_assoc_item(sb.db, item)), 62 PathResolution::AssocItem(item) => {
63 let def = match item {
64 hir::AssocItem::Function(it) => it.into(),
65 hir::AssocItem::Const(it) => it.into(),
66 hir::AssocItem::TypeAlias(it) => it.into(),
67 };
68 from_module_def(sb.db, def, Some(container))
69 }
63 PathResolution::Local(local) => { 70 PathResolution::Local(local) => {
64 let kind = NameKind::Local(local); 71 let kind = NameKind::Local(local);
65 let container = local.module(sb.db); 72 let container = local.module(sb.db);
66 Some(NameDefinition { kind, container, visibility: None }) 73 NameDefinition { kind, container, visibility: None }
67 } 74 }
68 PathResolution::TypeParam(par) => { 75 PathResolution::TypeParam(par) => {
69 let kind = NameKind::TypeParam(par); 76 let kind = NameKind::TypeParam(par);
70 let container = par.module(sb.db); 77 let container = par.module(sb.db);
71 Some(NameDefinition { kind, container, visibility }) 78 NameDefinition { kind, container, visibility }
72 } 79 }
73 PathResolution::Macro(def) => { 80 PathResolution::Macro(def) => {
74 let kind = NameKind::Macro(def); 81 let kind = NameKind::Macro(def);
75 Some(NameDefinition { kind, container, visibility }) 82 NameDefinition { kind, container, visibility }
76 } 83 }
77 PathResolution::SelfType(impl_block) => { 84 PathResolution::SelfType(impl_block) => {
78 let kind = NameKind::SelfType(impl_block); 85 let kind = NameKind::SelfType(impl_block);
79 let container = impl_block.module(sb.db); 86 let container = impl_block.module(sb.db);
80 Some(NameDefinition { kind, container, visibility }) 87 NameDefinition { kind, container, visibility }
81 } 88 }
82 } 89 };
90 Some(res)
83} 91}
diff --git a/crates/ra_ide/src/syntax_highlighting.rs b/crates/ra_ide/src/syntax_highlighting.rs
index c5d249fe8..c970f5d34 100644
--- a/crates/ra_ide/src/syntax_highlighting.rs
+++ b/crates/ra_ide/src/syntax_highlighting.rs
@@ -321,9 +321,6 @@ fn highlight_name(db: &RootDatabase, name_kind: NameKind) -> &'static str {
321 match name_kind { 321 match name_kind {
322 Macro(_) => tags::MACRO, 322 Macro(_) => tags::MACRO,
323 Field(_) => tags::FIELD, 323 Field(_) => tags::FIELD,
324 AssocItem(hir::AssocItem::Function(_)) => tags::FUNCTION,
325 AssocItem(hir::AssocItem::Const(_)) => tags::CONSTANT,
326 AssocItem(hir::AssocItem::TypeAlias(_)) => tags::TYPE,
327 Def(hir::ModuleDef::Module(_)) => tags::MODULE, 324 Def(hir::ModuleDef::Module(_)) => tags::MODULE,
328 Def(hir::ModuleDef::Function(_)) => tags::FUNCTION, 325 Def(hir::ModuleDef::Function(_)) => tags::FUNCTION,
329 Def(hir::ModuleDef::Adt(_)) => tags::TYPE, 326 Def(hir::ModuleDef::Adt(_)) => tags::TYPE,