aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/navigation_target.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-25 17:32:34 +0000
committerAleksey Kladov <[email protected]>2019-01-25 17:38:03 +0000
commit9f2574c97e55e2af1d1b93f60307aa9d41f55f42 (patch)
tree78e2eb10ef2046c4aa03b8d486325f1691b81342 /crates/ra_ide_api/src/navigation_target.rs
parent0044514a4e5fe2484071dc81ae59fc291626c05a (diff)
add ability to get strcut field source
Diffstat (limited to 'crates/ra_ide_api/src/navigation_target.rs')
-rw-r--r--crates/ra_ide_api/src/navigation_target.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs
index c5be8e01b..ae2175dbc 100644
--- a/crates/ra_ide_api/src/navigation_target.rs
+++ b/crates/ra_ide_api/src/navigation_target.rs
@@ -3,7 +3,7 @@ use ra_syntax::{
3 SyntaxNode, AstNode, SmolStr, TextRange, ast, 3 SyntaxNode, AstNode, SmolStr, TextRange, ast,
4 SyntaxKind::{self, NAME}, 4 SyntaxKind::{self, NAME},
5}; 5};
6use hir::{ModuleSource}; 6use hir::{ModuleSource, FieldSource};
7 7
8use crate::{FileSymbol, db::RootDatabase}; 8use crate::{FileSymbol, db::RootDatabase};
9 9
@@ -101,6 +101,17 @@ impl NavigationTarget {
101 NavigationTarget::from_named(file_id.original_file(db), &*fn_def) 101 NavigationTarget::from_named(file_id.original_file(db), &*fn_def)
102 } 102 }
103 103
104 pub(crate) fn from_field(db: &RootDatabase, field: hir::StructField) -> NavigationTarget {
105 let (file_id, field) = field.source(db);
106 let file_id = file_id.original_file(db);
107 match field {
108 FieldSource::Named(it) => NavigationTarget::from_named(file_id, &*it),
109 FieldSource::Pos(it) => {
110 NavigationTarget::from_syntax(file_id, "".into(), None, it.syntax())
111 }
112 }
113 }
114
104 // TODO once Def::Item is gone, this should be able to always return a NavigationTarget 115 // TODO once Def::Item is gone, this should be able to always return a NavigationTarget
105 pub(crate) fn from_def( 116 pub(crate) fn from_def(
106 db: &RootDatabase, 117 db: &RootDatabase,