diff options
Diffstat (limited to 'crates/ra_ide_api/src/navigation_target.rs')
-rw-r--r-- | crates/ra_ide_api/src/navigation_target.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs index c559dca11..004921863 100644 --- a/crates/ra_ide_api/src/navigation_target.rs +++ b/crates/ra_ide_api/src/navigation_target.rs | |||
@@ -79,6 +79,7 @@ impl NavigationTarget { | |||
79 | 79 | ||
80 | pub(crate) fn from_module(db: &RootDatabase, module: hir::Module) -> NavigationTarget { | 80 | pub(crate) fn from_module(db: &RootDatabase, module: hir::Module) -> NavigationTarget { |
81 | let (file_id, source) = module.definition_source(db); | 81 | let (file_id, source) = module.definition_source(db); |
82 | let file_id = file_id.as_original_file(); | ||
82 | let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default(); | 83 | let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default(); |
83 | match source { | 84 | match source { |
84 | ModuleSource::SourceFile(node) => { | 85 | ModuleSource::SourceFile(node) => { |
@@ -93,6 +94,7 @@ impl NavigationTarget { | |||
93 | pub(crate) fn from_module_to_decl(db: &RootDatabase, module: hir::Module) -> NavigationTarget { | 94 | pub(crate) fn from_module_to_decl(db: &RootDatabase, module: hir::Module) -> NavigationTarget { |
94 | let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default(); | 95 | let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default(); |
95 | if let Some((file_id, source)) = module.declaration_source(db) { | 96 | if let Some((file_id, source)) = module.declaration_source(db) { |
97 | let file_id = file_id.as_original_file(); | ||
96 | return NavigationTarget::from_syntax(file_id, name, None, source.syntax()); | 98 | return NavigationTarget::from_syntax(file_id, name, None, source.syntax()); |
97 | } | 99 | } |
98 | NavigationTarget::from_module(db, module) | 100 | NavigationTarget::from_module(db, module) |
@@ -151,12 +153,15 @@ impl NavigationTarget { | |||
151 | 153 | ||
152 | pub(crate) fn from_impl_block( | 154 | pub(crate) fn from_impl_block( |
153 | db: &RootDatabase, | 155 | db: &RootDatabase, |
154 | module: hir::Module, | 156 | impl_block: hir::ImplBlock, |
155 | impl_block: &hir::ImplBlock, | ||
156 | ) -> NavigationTarget { | 157 | ) -> NavigationTarget { |
157 | let (file_id, _) = module.definition_source(db); | 158 | let (file_id, node) = impl_block.source(db); |
158 | let node = module.impl_source(db, impl_block.id()); | 159 | NavigationTarget::from_syntax( |
159 | NavigationTarget::from_syntax(file_id, "impl".into(), None, node.syntax()) | 160 | file_id.as_original_file(), |
161 | "impl".into(), | ||
162 | None, | ||
163 | node.syntax(), | ||
164 | ) | ||
160 | } | 165 | } |
161 | 166 | ||
162 | #[cfg(test)] | 167 | #[cfg(test)] |