diff options
author | Aleksey Kladov <[email protected]> | 2019-01-23 20:14:13 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-01-24 10:29:19 +0000 |
commit | 3ab1519cb27b927074ed7fbbb18a856e6e7fabb8 (patch) | |
tree | 692c7a256604e188d38890966290bd1637d7dd60 /crates/ra_ide_api/src/navigation_target.rs | |
parent | cfb085ded8d61d7b744d0a83ecbb3da254f6ab9f (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.rs | 13 |
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) |