make handle_references accept refs from other files

This commit is contained in:
Ekaterina Babshukova 2019-10-12 13:39:02 +03:00
parent df8441b24e
commit 79e6b3b0d1

View file

@ -481,8 +481,7 @@ pub fn handle_references(
params: req::ReferenceParams, params: req::ReferenceParams,
) -> Result<Option<Vec<Location>>> { ) -> Result<Option<Vec<Location>>> {
let position = params.text_document_position.try_conv_with(&world)?; let position = params.text_document_position.try_conv_with(&world)?;
let line_index = world.analysis().file_line_index(position.file_id)?;
let refs = match world.analysis().find_all_refs(position)? { let refs = match world.analysis().find_all_refs(position)? {
None => return Ok(None), None => return Ok(None),
Some(refs) => refs, Some(refs) => refs,
@ -490,13 +489,19 @@ pub fn handle_references(
let locations = if params.context.include_declaration { let locations = if params.context.include_declaration {
refs.into_iter() refs.into_iter()
.filter_map(|r| to_location(r.file_id, r.range, &world, &line_index).ok()) .filter_map(|r| {
let line_index = world.analysis().file_line_index(r.file_id).ok()?;
to_location(r.file_id, r.range, &world, &line_index).ok()
})
.collect() .collect()
} else { } else {
// Only iterate over the references if include_declaration was false // Only iterate over the references if include_declaration was false
refs.references() refs.references()
.iter() .iter()
.filter_map(|r| to_location(r.file_id, r.range, &world, &line_index).ok()) .filter_map(|r| {
let line_index = world.analysis().file_line_index(r.file_id).ok()?;
to_location(r.file_id, r.range, &world, &line_index).ok()
})
.collect() .collect()
}; };