diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index af3cd04ea9..a07aaa9b59 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs @@ -481,8 +481,7 @@ pub fn handle_references( params: req::ReferenceParams, ) -> Result>> { 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)? { None => return Ok(None), Some(refs) => refs, @@ -490,13 +489,19 @@ pub fn handle_references( let locations = if params.context.include_declaration { 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() } else { // Only iterate over the references if include_declaration was false refs.references() .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() };