5467: Allow null or empty values for configuration r=matklad a=kjeremy

Allow the 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.

This also protects against `null` or `{}` during initialize. I'm not sure if we want to interpret `{}` as "don't change anything" but I think that's a reasonable approach to take.

This should help with LSP clients working out of the box.

Fixes #5464 

Co-authored-by: kjeremy <kjeremy@gmail.com>
This commit is contained in:
bors[bot]
2020-07-21 09:41:54 +00:00
committed by GitHub
2 changed files with 7 additions and 0 deletions

View File

@@ -178,6 +178,11 @@ impl Config {
pub fn update(&mut self, json: serde_json::Value) {
log::info!("Config::update({:#})", json);
if json.is_null() || json.as_object().map_or(false, |it| it.is_empty()) {
return;
}
let data = ConfigData::from_json(json);
self.with_sysroot = data.withSysroot;