about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-01-18 19:31:21 +0000
committerbors <bors@rust-lang.org>2023-01-18 19:31:21 +0000
commit760f2ff58dc2a5b734012548db8b39614b94223a (patch)
tree99ef32c256067f5541d3ecc7d8a0f8f3b3c8db11
parent3a7271336536f2cd558498755254ae8c0e73baa7 (diff)
parent1e4a1829543c3d0dcee91d775239d16384db7821 (diff)
downloadrust-760f2ff58dc2a5b734012548db8b39614b94223a.tar.gz
rust-760f2ff58dc2a5b734012548db8b39614b94223a.zip
Auto merge of #13980 - Veykril:checkOnSaveConfigPatch, r=Veykril
Fix checkOnSave to check config patching not always working

This early return was missed in the initial PR, so if we aren't patching the `completion_addCallArgumentSnippets` `completion_addCallParenthesis` configs we won't be patching the checkOnSave ones...
-rw-r--r--crates/rust-analyzer/src/config/patch_old_style.rs42
1 files changed, 32 insertions, 10 deletions
diff --git a/crates/rust-analyzer/src/config/patch_old_style.rs b/crates/rust-analyzer/src/config/patch_old_style.rs
index de6ac946a68..73d2ed32984 100644
--- a/crates/rust-analyzer/src/config/patch_old_style.rs
+++ b/crates/rust-analyzer/src/config/patch_old_style.rs
@@ -114,16 +114,18 @@ pub(super) fn patch_json_for_outdated_configs(json: &mut Value) {
     }
 
     // completion_addCallArgumentSnippets completion_addCallParenthesis -> completion_callable_snippets
-    let res = match (
-        copy.pointer("/completion/addCallArgumentSnippets"),
-        copy.pointer("/completion/addCallParenthesis"),
-    ) {
-        (Some(Value::Bool(true)), Some(Value::Bool(true))) => json!("fill_arguments"),
-        (_, Some(Value::Bool(true))) => json!("add_parentheses"),
-        (Some(Value::Bool(false)), Some(Value::Bool(false))) => json!("none"),
-        (_, _) => return,
-    };
-    merge(json, json!({ "completion": { "callable": {"snippets": res }} }));
+    'completion: {
+        let res = match (
+            copy.pointer("/completion/addCallArgumentSnippets"),
+            copy.pointer("/completion/addCallParenthesis"),
+        ) {
+            (Some(Value::Bool(true)), Some(Value::Bool(true))) => json!("fill_arguments"),
+            (_, Some(Value::Bool(true))) => json!("add_parentheses"),
+            (Some(Value::Bool(false)), Some(Value::Bool(false))) => json!("none"),
+            (_, _) => break 'completion,
+        };
+        merge(json, json!({ "completion": { "callable": {"snippets": res }} }));
+    }
 
     // We need to do this due to the checkOnSave_enable -> checkOnSave change, as that key now can either be an object or a bool
     // checkOnSave_* -> check_*
@@ -146,3 +148,23 @@ fn merge(dst: &mut Value, src: Value) {
         (dst, src) => *dst = src,
     }
 }
+
+#[test]
+fn check_on_save_patching() {
+    let mut json = json!({ "checkOnSave": { "overrideCommand": "foo" }});
+    patch_json_for_outdated_configs(&mut json);
+    assert_eq!(
+        json,
+        json!({ "checkOnSave": { "overrideCommand": "foo" }, "check": { "overrideCommand": "foo" }})
+    );
+}
+
+#[test]
+fn check_on_save_patching_enable() {
+    let mut json = json!({ "checkOnSave": { "enable": true, "overrideCommand": "foo" }});
+    patch_json_for_outdated_configs(&mut json);
+    assert_eq!(
+        json,
+        json!({ "checkOnSave": true, "check": { "enable": true, "overrideCommand": "foo" }})
+    );
+}