diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 30f0031905f1..051871020af7 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -571,11 +571,8 @@ config_data! { /// avoid checking unnecessary things. cargo_buildScripts_useRustcWrapper: bool = true, /// List of cfg options to enable with the given values. - cargo_cfgs: FxHashMap> = { - let mut m = FxHashMap::default(); - m.insert("debug_assertions".to_owned(), None); - m.insert("miri".to_owned(), None); - m + cargo_cfgs: Vec = { + vec!["debug_assertion".into(), "miri".into()] }, /// Extra arguments that are passed to every cargo invocation. cargo_extraArgs: Vec = vec![], @@ -1944,6 +1941,13 @@ impl Config { global: CfgDiff::new( self.cargo_cfgs(source_root) .iter() + // parse any cfg setting formatted as key=value or just key (without value) + .filter_map(|s| { + let mut sp = s.splitn(2, "="); + let key = sp.next(); + let val = sp.next(); + key.map(|key| (key, val)) + }) .map(|(key, val)| match val { Some(val) => CfgAtom::KeyValue { key: Symbol::intern(key), diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index 5b86766aa8ea..c6f5852f87ff 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -94,10 +94,10 @@ avoid checking unnecessary things. -- Default: ---- -{ - "miri": null, - "debug_assertions": null -} +[ + "debug_assertion", + "miri" +] ---- List of cfg options to enable with the given values. diff --git a/editors/code/package.json b/editors/code/package.json index 80246bf3feac..6cb74a94a00c 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -791,11 +791,14 @@ "properties": { "rust-analyzer.cargo.cfgs": { "markdownDescription": "List of cfg options to enable with the given values.", - "default": { - "miri": null, - "debug_assertions": null - }, - "type": "object" + "default": [ + "debug_assertion", + "miri" + ], + "type": "array", + "items": { + "type": "string" + } } } },