about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2022-04-11 13:10:43 +0200
committerLukas Wirth <lukastw97@gmail.com>2022-04-11 13:10:43 +0200
commitb90df7997d891d89e658a7781cc4a52fba38aa40 (patch)
treef8f051b118e77e1ee93cee40c45daa7d22225ae0
parent6d7055e3223a33e3df7a8dd0c01e9dec4b91ac38 (diff)
downloadrust-b90df7997d891d89e658a7781cc4a52fba38aa40.tar.gz
rust-b90df7997d891d89e658a7781cc4a52fba38aa40.zip
Add simplistic config validation
-rw-r--r--crates/rust-analyzer/src/config.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index 4d02e896534..ab9ad4a5431 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -571,6 +571,9 @@ impl Config {
                 None => tracing::info!("Invalid snippet {}", name),
             }
         }
+
+        self.validate(&mut errors);
+
         if errors.is_empty() {
             Ok(())
         } else {
@@ -578,6 +581,16 @@ impl Config {
         }
     }
 
+    fn validate(&self, error_sink: &mut Vec<(String, serde_json::Error)>) {
+        use serde::de::Error;
+        if self.data.checkOnSave_command.is_empty() {
+            error_sink.push((
+                "/checkOnSave/command".to_string(),
+                serde_json::Error::custom("expected a non-empty string"),
+            ));
+        }
+    }
+
     pub fn json_schema() -> serde_json::Value {
         ConfigData::json_schema()
     }