aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/navigation_target.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-24 12:40:52 +0000
committerAleksey Kladov <[email protected]>2019-01-24 12:40:52 +0000
commit2734636c532101565b1a4c4715790d4cc910ad47 (patch)
treee928bd977376f1cbd6b14c15fbe10ade7d09d709 /crates/ra_ide_api/src/navigation_target.rs
parent1754dd9fdd1bf7d3d72aa2bcb25f33fd8885cd7c (diff)
update ide_api to new hir
Diffstat (limited to 'crates/ra_ide_api/src/navigation_target.rs')
-rw-r--r--crates/ra_ide_api/src/navigation_target.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs
index 1eb177665..19cea2fd6 100644
--- a/crates/ra_ide_api/src/navigation_target.rs
+++ b/crates/ra_ide_api/src/navigation_target.rs
@@ -96,6 +96,11 @@ impl NavigationTarget {
96 NavigationTarget::from_module(db, module) 96 NavigationTarget::from_module(db, module)
97 } 97 }
98 98
99 pub(crate) fn from_function(db: &RootDatabase, func: hir::Function) -> NavigationTarget {
100 let (file_id, fn_def) = func.source(db);
101 NavigationTarget::from_named(file_id.original_file(db), &*fn_def)
102 }
103
99 // TODO once Def::Item is gone, this should be able to always return a NavigationTarget 104 // TODO once Def::Item is gone, this should be able to always return a NavigationTarget
100 pub(crate) fn from_def( 105 pub(crate) fn from_def(
101 db: &RootDatabase, 106 db: &RootDatabase,
@@ -106,6 +111,9 @@ impl NavigationTarget {
106 hir::ModuleDef::Module(module) => { 111 hir::ModuleDef::Module(module) => {
107 return Some(NavigationTarget::from_module(db, module)); 112 return Some(NavigationTarget::from_module(db, module));
108 } 113 }
114 hir::ModuleDef::Function(func) => {
115 return Some(NavigationTarget::from_function(db, func));
116 }
109 }; 117 };
110 118
111 let res = match def { 119 let res = match def {
@@ -121,10 +129,6 @@ impl NavigationTarget {
121 let (file_id, node) = ev.source(db); 129 let (file_id, node) = ev.source(db);
122 NavigationTarget::from_named(file_id.original_file(db), &*node) 130 NavigationTarget::from_named(file_id.original_file(db), &*node)
123 } 131 }
124 Def::Function(f) => {
125 let (file_id, node) = f.source(db);
126 NavigationTarget::from_named(file_id.original_file(db), &*node)
127 }
128 Def::Trait(f) => { 132 Def::Trait(f) => {
129 let (file_id, node) = f.source(db); 133 let (file_id, node) = f.source(db);
130 NavigationTarget::from_named(file_id.original_file(db), &*node) 134 NavigationTarget::from_named(file_id.original_file(db), &*node)