aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/navigation_target.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api/src/navigation_target.rs')
-rw-r--r--crates/ra_ide_api/src/navigation_target.rs15
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)]