From d7cd88b1a2169e50140730db4bd451350367e5ff Mon Sep 17 00:00:00 2001 From: Jeremy Kolb Date: Sat, 11 Jul 2020 19:12:42 -0400 Subject: [PATCH] Mark machine applicable fixes as preferred This allows us to run the auto fix command from vscode to automatically fix all diagnostics in the file. They are also distinguished in the UI. --- crates/rust-analyzer/src/diagnostics/to_proto.rs | 1 + crates/rust-analyzer/src/handlers.rs | 1 + crates/rust-analyzer/src/lsp_ext.rs | 3 +++ crates/rust-analyzer/src/to_proto.rs | 1 + crates/rust-analyzer/test_data/rustc_unused_variable.txt | 3 +++ .../rust-analyzer/test_data/rustc_unused_variable_as_hint.txt | 3 +++ .../rust-analyzer/test_data/rustc_unused_variable_as_info.txt | 3 +++ crates/rust-analyzer/test_data/snap_multi_line_fix.txt | 3 +++ crates/rust-analyzer/tests/heavy_tests/main.rs | 2 ++ 9 files changed, 20 insertions(+) diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs index 7be3ef9841e3..97f3313521ca 100644 --- a/crates/rust-analyzer/src/diagnostics/to_proto.rs +++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs @@ -118,6 +118,7 @@ fn map_rust_child_diagnostic( changes: Some(edit_map), document_changes: None, }), + is_preferred: Some(true), }) } } diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index d28c700f14ed..42f21289ae22 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -775,6 +775,7 @@ fn handle_fixes( group: None, kind: Some(CodeActionKind::QUICKFIX), edit: Some(edit), + is_preferred: Some(false), }; res.push(action); } diff --git a/crates/rust-analyzer/src/lsp_ext.rs b/crates/rust-analyzer/src/lsp_ext.rs index e216966a9862..13ebb18fbb82 100644 --- a/crates/rust-analyzer/src/lsp_ext.rs +++ b/crates/rust-analyzer/src/lsp_ext.rs @@ -243,6 +243,7 @@ impl Request for CodeActionRequest { } #[derive(Debug, PartialEq, Clone, Default, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] pub struct CodeAction { pub title: String, #[serde(skip_serializing_if = "Option::is_none")] @@ -256,6 +257,8 @@ pub struct CodeAction { // pub command: Option, #[serde(skip_serializing_if = "Option::is_none")] pub edit: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_preferred: Option, } #[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)] diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index 2fcae9ca3831..e60537fcd4b9 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -652,6 +652,7 @@ pub(crate) fn unresolved_code_action( group: assist.group.filter(|_| snap.config.client_caps.code_action_group).map(|gr| gr.0), kind: Some(code_action_kind(assist.id.1)), edit: None, + is_preferred: None, }; Ok(res) } diff --git a/crates/rust-analyzer/test_data/rustc_unused_variable.txt b/crates/rust-analyzer/test_data/rustc_unused_variable.txt index 084632757262..74d91bc77c81 100644 --- a/crates/rust-analyzer/test_data/rustc_unused_variable.txt +++ b/crates/rust-analyzer/test_data/rustc_unused_variable.txt @@ -65,6 +65,9 @@ document_changes: None, }, ), + is_preferred: Some( + true, + ), }, ], }, diff --git a/crates/rust-analyzer/test_data/rustc_unused_variable_as_hint.txt b/crates/rust-analyzer/test_data/rustc_unused_variable_as_hint.txt index d637923c502f..8a420c9495c1 100644 --- a/crates/rust-analyzer/test_data/rustc_unused_variable_as_hint.txt +++ b/crates/rust-analyzer/test_data/rustc_unused_variable_as_hint.txt @@ -65,6 +65,9 @@ document_changes: None, }, ), + is_preferred: Some( + true, + ), }, ], }, diff --git a/crates/rust-analyzer/test_data/rustc_unused_variable_as_info.txt b/crates/rust-analyzer/test_data/rustc_unused_variable_as_info.txt index 6b48f16edb75..79910660b7f8 100644 --- a/crates/rust-analyzer/test_data/rustc_unused_variable_as_info.txt +++ b/crates/rust-analyzer/test_data/rustc_unused_variable_as_info.txt @@ -65,6 +65,9 @@ document_changes: None, }, ), + is_preferred: Some( + true, + ), }, ], }, diff --git a/crates/rust-analyzer/test_data/snap_multi_line_fix.txt b/crates/rust-analyzer/test_data/snap_multi_line_fix.txt index 2c4cbea1688f..4f811ab64bf7 100644 --- a/crates/rust-analyzer/test_data/snap_multi_line_fix.txt +++ b/crates/rust-analyzer/test_data/snap_multi_line_fix.txt @@ -93,6 +93,9 @@ document_changes: None, }, ), + is_preferred: Some( + true, + ), }, ], }, diff --git a/crates/rust-analyzer/tests/heavy_tests/main.rs b/crates/rust-analyzer/tests/heavy_tests/main.rs index 7b908d30c21f..f12e5a37f43d 100644 --- a/crates/rust-analyzer/tests/heavy_tests/main.rs +++ b/crates/rust-analyzer/tests/heavy_tests/main.rs @@ -284,6 +284,7 @@ fn main() {} } ] }, + "isPreferred": false, "kind": "quickfix", "title": "Create module" }]), @@ -355,6 +356,7 @@ fn main() {{}} } ] }, + "isPreferred": false, "kind": "quickfix", "title": "Create module" }]),