diff options
Diffstat (limited to 'crates/ra_ide_api/src/references.rs')
-rw-r--r-- | crates/ra_ide_api/src/references.rs | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/crates/ra_ide_api/src/references.rs b/crates/ra_ide_api/src/references.rs index 24cd7e827..e640b92cf 100644 --- a/crates/ra_ide_api/src/references.rs +++ b/crates/ra_ide_api/src/references.rs | |||
@@ -81,10 +81,6 @@ pub(crate) fn find_all_refs( | |||
81 | // _ => vec![], | 81 | // _ => vec![], |
82 | // }; | 82 | // }; |
83 | let references = find_refs(db, def, name); | 83 | let references = find_refs(db, def, name); |
84 | let references = references | ||
85 | .into_iter() | ||
86 | .map(move |ref_desc| FileRange { file_id: position.file_id, range: ref_desc.range }) | ||
87 | .collect::<Vec<_>>(); | ||
88 | 84 | ||
89 | return Some(RangeInfo::new(range, ReferenceSearchResult { declaration, references })); | 85 | return Some(RangeInfo::new(range, ReferenceSearchResult { declaration, references })); |
90 | 86 | ||
@@ -314,6 +310,45 @@ mod tests { | |||
314 | assert_eq!(refs.len(), 1); | 310 | assert_eq!(refs.len(), 1); |
315 | } | 311 | } |
316 | 312 | ||
313 | #[test] | ||
314 | fn test_find_all_refs_modules() { | ||
315 | let code = r#" | ||
316 | //- /lib.rs | ||
317 | pub mod foo; | ||
318 | pub mod bar; | ||
319 | |||
320 | fn f() { | ||
321 | let i = foo::Foo { n: 5 }; | ||
322 | } | ||
323 | |||
324 | //- /foo.rs | ||
325 | use crate::bar; | ||
326 | |||
327 | pub struct Foo { | ||
328 | pub n: u32, | ||
329 | } | ||
330 | |||
331 | fn f() { | ||
332 | let i = bar::Bar { n: 5 }; | ||
333 | } | ||
334 | |||
335 | //- /bar.rs | ||
336 | use crate::foo; | ||
337 | |||
338 | pub struct Bar { | ||
339 | pub n: u32, | ||
340 | } | ||
341 | |||
342 | fn f() { | ||
343 | let i = foo::Foo<|> { n: 5 }; | ||
344 | } | ||
345 | "#; | ||
346 | |||
347 | let (analysis, pos) = analysis_and_position(code); | ||
348 | let refs = analysis.find_all_refs(pos).unwrap().unwrap(); | ||
349 | assert_eq!(refs.len(), 3); | ||
350 | } | ||
351 | |||
317 | fn get_all_refs(text: &str) -> ReferenceSearchResult { | 352 | fn get_all_refs(text: &str) -> ReferenceSearchResult { |
318 | let (analysis, position) = single_file_with_position(text); | 353 | let (analysis, position) = single_file_with_position(text); |
319 | analysis.find_all_refs(position).unwrap().unwrap() | 354 | analysis.find_all_refs(position).unwrap().unwrap() |