diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-12-05 22:04:34 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-12-05 22:04:34 +0000 |
commit | e9060db1581a902f433ebe7df1f2c39c64e9bd36 (patch) | |
tree | d4616765e2f58978e486ed5c38f56ebd4be2b824 /crates/ra_lsp_server | |
parent | 5ebfd24eb92f3b198c5b9df1b2d4fc58500ed788 (diff) | |
parent | d0811c4066c90b03532860c93d2a14248240b2a0 (diff) |
Merge #253
253: Fix diagnostic fixes showing up everywhere r=matklad a=flodiebold
The LSP code action request always returned the fixes for all diagnostics anywhere in the file, because of a shadowed variable.
There's no test yet; I wasn't sure where to add it. I tried adding one in `heavy_tests`, but that's a bit uncomfortable because the code action response contains the (random) file paths. I could make it work, but wanted to ask beforehand what you think.
Co-authored-by: Florian Diebold <[email protected]>
Diffstat (limited to 'crates/ra_lsp_server')
-rw-r--r-- | crates/ra_lsp_server/src/main_loop/handlers.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index 6d5622b15..af21254e4 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs | |||
@@ -9,7 +9,7 @@ use languageserver_types::{ | |||
9 | WorkspaceEdit, ParameterInformation, SignatureInformation, Hover, HoverContents, | 9 | WorkspaceEdit, ParameterInformation, SignatureInformation, Hover, HoverContents, |
10 | }; | 10 | }; |
11 | use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FilePosition}; | 11 | use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FilePosition}; |
12 | use ra_syntax::{TextUnit, text_utils::contains_offset_nonstrict}; | 12 | use ra_syntax::{TextUnit, text_utils::{contains_offset_nonstrict, intersect}}; |
13 | use rustc_hash::FxHashMap; | 13 | use rustc_hash::FxHashMap; |
14 | use serde_json::to_value; | 14 | use serde_json::to_value; |
15 | 15 | ||
@@ -618,7 +618,7 @@ pub fn handle_code_action( | |||
618 | .diagnostics(file_id)? | 618 | .diagnostics(file_id)? |
619 | .into_iter() | 619 | .into_iter() |
620 | .filter_map(|d| Some((d.range, d.fix?))) | 620 | .filter_map(|d| Some((d.range, d.fix?))) |
621 | .filter(|(range, _fix)| contains_offset_nonstrict(*range, range.start())) | 621 | .filter(|(diag_range, _fix)| intersect(*diag_range, range).is_some()) |
622 | .map(|(_range, fix)| fix); | 622 | .map(|(_range, fix)| fix); |
623 | 623 | ||
624 | let mut res = Vec::new(); | 624 | let mut res = Vec::new(); |