diff options
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) |