aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/lib.rs')
-rw-r--r--crates/ra_analysis/src/lib.rs25
1 files changed, 18 insertions, 7 deletions
diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs
index a01febf4e..8247914c0 100644
--- a/crates/ra_analysis/src/lib.rs
+++ b/crates/ra_analysis/src/lib.rs
@@ -222,21 +222,31 @@ impl Query {
222#[derive(Debug)] 222#[derive(Debug)]
223pub struct NavigationTarget { 223pub struct NavigationTarget {
224 file_id: FileId, 224 file_id: FileId,
225 symbol: FileSymbol, 225 name: SmolStr,
226 kind: SyntaxKind,
227 range: TextRange,
226} 228}
227 229
228impl NavigationTarget { 230impl NavigationTarget {
229 pub fn name(&self) -> SmolStr { 231 fn from_symbol(file_id: FileId, symbol: FileSymbol) -> NavigationTarget {
230 self.symbol.name.clone() 232 NavigationTarget {
233 name: symbol.name.clone(),
234 kind: symbol.kind.clone(),
235 file_id,
236 range: symbol.node_range.clone(),
237 }
238 }
239 pub fn name(&self) -> &SmolStr {
240 &self.name
231 } 241 }
232 pub fn kind(&self) -> SyntaxKind { 242 pub fn kind(&self) -> SyntaxKind {
233 self.symbol.kind 243 self.kind
234 } 244 }
235 pub fn file_id(&self) -> FileId { 245 pub fn file_id(&self) -> FileId {
236 self.file_id 246 self.file_id
237 } 247 }
238 pub fn range(&self) -> TextRange { 248 pub fn range(&self) -> TextRange {
239 self.symbol.node_range 249 self.range
240 } 250 }
241} 251}
242 252
@@ -260,7 +270,8 @@ impl ReferenceResolution {
260 } 270 }
261 271
262 fn add_resolution(&mut self, file_id: FileId, symbol: FileSymbol) { 272 fn add_resolution(&mut self, file_id: FileId, symbol: FileSymbol) {
263 self.resolves_to.push(NavigationTarget { file_id, symbol }) 273 self.resolves_to
274 .push(NavigationTarget::from_symbol(file_id, symbol))
264 } 275 }
265} 276}
266 277
@@ -359,7 +370,7 @@ impl Analysis {
359 pub fn symbol_search(&self, query: Query) -> Cancelable<Vec<NavigationTarget>> { 370 pub fn symbol_search(&self, query: Query) -> Cancelable<Vec<NavigationTarget>> {
360 let res = symbol_index::world_symbols(&*self.db, query)? 371 let res = symbol_index::world_symbols(&*self.db, query)?
361 .into_iter() 372 .into_iter()
362 .map(|(file_id, symbol)| NavigationTarget { file_id, symbol }) 373 .map(|(file_id, symbol)| NavigationTarget::from_symbol(file_id, symbol))
363 .collect(); 374 .collect();
364 Ok(res) 375 Ok(res)
365 } 376 }