diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-06-09 20:45:35 +0100 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-06-09 20:45:35 +0100 |
commit | cbafae6fa8e1292302d1ea0c04871fe24d174954 (patch) | |
tree | 047b949be1ee4908d2e429bfffc545a4f859215f /crates/ra_ide_api/src/goto_definition.rs | |
parent | 9c92c05ca614fcded456153b1bc6717d17f0dafb (diff) | |
parent | 60938ff73ed80461982f52cb2b044572e7323a0c (diff) |
Merge #1388
1388: Remove NavigationTarget::node and fill docs and description in during construction r=matklad a=edwin0cheng
Related dissused:
https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/MBE.20discussion/near/167105559
Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'crates/ra_ide_api/src/goto_definition.rs')
-rw-r--r-- | crates/ra_ide_api/src/goto_definition.rs | 49 |
1 files changed, 36 insertions, 13 deletions
diff --git a/crates/ra_ide_api/src/goto_definition.rs b/crates/ra_ide_api/src/goto_definition.rs index e72b7a6e7..325a5a4f3 100644 --- a/crates/ra_ide_api/src/goto_definition.rs +++ b/crates/ra_ide_api/src/goto_definition.rs | |||
@@ -1,6 +1,6 @@ | |||
1 | use ra_db::{FileId, SourceDatabase}; | 1 | use ra_db::{FileId, SourceDatabase}; |
2 | use ra_syntax::{ | 2 | use ra_syntax::{ |
3 | AstNode, ast, | 3 | AstNode, ast::{self, DocCommentsOwner}, |
4 | algo::{ | 4 | algo::{ |
5 | find_node_at_offset, | 5 | find_node_at_offset, |
6 | visit::{visitor, Visitor}, | 6 | visit::{visitor, Visitor}, |
@@ -13,6 +13,7 @@ use crate::{ | |||
13 | db::RootDatabase, | 13 | db::RootDatabase, |
14 | RangeInfo, | 14 | RangeInfo, |
15 | name_ref_kind::{NameRefKind::*, classify_name_ref}, | 15 | name_ref_kind::{NameRefKind::*, classify_name_ref}, |
16 | display::ShortLabel, | ||
16 | }; | 17 | }; |
17 | 18 | ||
18 | pub(crate) fn goto_definition( | 19 | pub(crate) fn goto_definition( |
@@ -82,7 +83,7 @@ pub(crate) fn reference_definition( | |||
82 | // Fallback index based approach: | 83 | // Fallback index based approach: |
83 | let navs = crate::symbol_index::index_resolve(db, name_ref) | 84 | let navs = crate::symbol_index::index_resolve(db, name_ref) |
84 | .into_iter() | 85 | .into_iter() |
85 | .map(NavigationTarget::from_symbol) | 86 | .map(|s| NavigationTarget::from_symbol(db, s)) |
86 | .collect(); | 87 | .collect(); |
87 | Approximate(navs) | 88 | Approximate(navs) |
88 | } | 89 | } |
@@ -114,17 +115,39 @@ pub(crate) fn name_definition( | |||
114 | 115 | ||
115 | fn named_target(file_id: FileId, node: &SyntaxNode) -> Option<NavigationTarget> { | 116 | fn named_target(file_id: FileId, node: &SyntaxNode) -> Option<NavigationTarget> { |
116 | visitor() | 117 | visitor() |
117 | .visit(|node: &ast::StructDef| NavigationTarget::from_named(file_id, node)) | 118 | .visit(|node: &ast::StructDef| { |
118 | .visit(|node: &ast::EnumDef| NavigationTarget::from_named(file_id, node)) | 119 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) |
119 | .visit(|node: &ast::EnumVariant| NavigationTarget::from_named(file_id, node)) | 120 | }) |
120 | .visit(|node: &ast::FnDef| NavigationTarget::from_named(file_id, node)) | 121 | .visit(|node: &ast::EnumDef| { |
121 | .visit(|node: &ast::TypeAliasDef| NavigationTarget::from_named(file_id, node)) | 122 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) |
122 | .visit(|node: &ast::ConstDef| NavigationTarget::from_named(file_id, node)) | 123 | }) |
123 | .visit(|node: &ast::StaticDef| NavigationTarget::from_named(file_id, node)) | 124 | .visit(|node: &ast::EnumVariant| { |
124 | .visit(|node: &ast::TraitDef| NavigationTarget::from_named(file_id, node)) | 125 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) |
125 | .visit(|node: &ast::NamedFieldDef| NavigationTarget::from_named(file_id, node)) | 126 | }) |
126 | .visit(|node: &ast::Module| NavigationTarget::from_named(file_id, node)) | 127 | .visit(|node: &ast::FnDef| { |
127 | .visit(|node: &ast::MacroCall| NavigationTarget::from_named(file_id, node)) | 128 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) |
129 | }) | ||
130 | .visit(|node: &ast::TypeAliasDef| { | ||
131 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) | ||
132 | }) | ||
133 | .visit(|node: &ast::ConstDef| { | ||
134 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) | ||
135 | }) | ||
136 | .visit(|node: &ast::StaticDef| { | ||
137 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) | ||
138 | }) | ||
139 | .visit(|node: &ast::TraitDef| { | ||
140 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) | ||
141 | }) | ||
142 | .visit(|node: &ast::NamedFieldDef| { | ||
143 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) | ||
144 | }) | ||
145 | .visit(|node: &ast::Module| { | ||
146 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), node.short_label()) | ||
147 | }) | ||
148 | .visit(|node: &ast::MacroCall| { | ||
149 | NavigationTarget::from_named(file_id, node, node.doc_comment_text(), None) | ||
150 | }) | ||
128 | .accept(node) | 151 | .accept(node) |
129 | } | 152 | } |
130 | 153 | ||