Skip to content

Commit adc4bb5

Browse files
committed
Allow client to respond to workspace/configuration with null values
This is allowed per the spec if the client doesn't know about the configuration we've requested.
1 parent 76c1fac commit adc4bb5

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

crates/rust-analyzer/src/config.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@ impl Config {
177177

178178
pub fn update(&mut self, json: serde_json::Value) {
179179
log::info!("Config::update({:#})", json);
180+
181+
if json.is_null() {
182+
return;
183+
}
184+
180185
let data = ConfigData::from_json(json);
181186

182187
self.with_sysroot = data.withSysroot;

crates/rust-analyzer/src/main_loop.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,8 @@ impl GlobalState {
468468
}
469469
(None, Some(mut configs)) => {
470470
if let Some(json) = configs.get_mut(0) {
471+
// Note that json can be null according to the spec if the client can't
472+
// provide a configuration. This is handled in Config::update below.
471473
let mut config = this.config.clone();
472474
config.update(json.take());
473475
this.update_configuration(config);

0 commit comments

Comments
 (0)