diff options
Diffstat (limited to 'crates/ra_analysis/src/lib.rs')
-rw-r--r-- | crates/ra_analysis/src/lib.rs | 25 |
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)] |
223 | pub struct NavigationTarget { | 223 | pub 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 | ||
228 | impl NavigationTarget { | 230 | impl 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 | } |