aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/navigation_target.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-23 20:14:13 +0000
committerAleksey Kladov <[email protected]>2019-01-24 10:29:19 +0000
commit3ab1519cb27b927074ed7fbbb18a856e6e7fabb8 (patch)
tree692c7a256604e188d38890966290bd1637d7dd60 /crates/ra_ide_api/src/navigation_target.rs
parentcfb085ded8d61d7b744d0a83ecbb3da254f6ab9f (diff)
Change ids strategy
this is a part of larghish hir refactoring which aims to * replace per-source-root module trees with per crate trees * switch from a monotyped DedId to type-specific ids
Diffstat (limited to 'crates/ra_ide_api/src/navigation_target.rs')
-rw-r--r--crates/ra_ide_api/src/navigation_target.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs
index 21c15c0c0..1eb177665 100644
--- a/crates/ra_ide_api/src/navigation_target.rs
+++ b/crates/ra_ide_api/src/navigation_target.rs
@@ -97,7 +97,17 @@ impl NavigationTarget {
97 } 97 }
98 98
99 // TODO once Def::Item is gone, this should be able to always return a NavigationTarget 99 // TODO once Def::Item is gone, this should be able to always return a NavigationTarget
100 pub(crate) fn from_def(db: &RootDatabase, def: Def) -> Option<NavigationTarget> { 100 pub(crate) fn from_def(
101 db: &RootDatabase,
102 module_def: hir::ModuleDef,
103 ) -> Option<NavigationTarget> {
104 let def = match module_def {
105 hir::ModuleDef::Def(def_id) => def_id.resolve(db),
106 hir::ModuleDef::Module(module) => {
107 return Some(NavigationTarget::from_module(db, module));
108 }
109 };
110
101 let res = match def { 111 let res = match def {
102 Def::Struct(s) => { 112 Def::Struct(s) => {
103 let (file_id, node) = s.source(db); 113 let (file_id, node) = s.source(db);
@@ -131,7 +141,6 @@ impl NavigationTarget {
131 let (file_id, node) = f.source(db); 141 let (file_id, node) = f.source(db);
132 NavigationTarget::from_named(file_id.original_file(db), &*node) 142 NavigationTarget::from_named(file_id.original_file(db), &*node)
133 } 143 }
134 Def::Module(m) => NavigationTarget::from_module(db, m),
135 Def::Item => return None, 144 Def::Item => return None,
136 }; 145 };
137 Some(res) 146 Some(res)