diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2024-12-29 16:04:17 +0100 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2024-12-29 16:04:17 +0100 |
| commit | 7f757b96f5bcad346c532bfe52af4111f2d3b3cc (patch) | |
| tree | ef5f2ede1c2df2f2542c4d254541757dce959cf6 | |
| parent | b570206ca469c36b8e8686a0a623412f5d33cb6d (diff) | |
| download | rust-7f757b96f5bcad346c532bfe52af4111f2d3b3cc.tar.gz rust-7f757b96f5bcad346c532bfe52af4111f2d3b3cc.zip | |
fix: Fix invalid `-O` flag used by cfg discovery
| -rw-r--r-- | src/tools/rust-analyzer/crates/project-model/src/toolchain_info/rustc_cfg.rs | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/tools/rust-analyzer/crates/project-model/src/toolchain_info/rustc_cfg.rs b/src/tools/rust-analyzer/crates/project-model/src/toolchain_info/rustc_cfg.rs index 12e674a6c4f..b1e8c3376a1 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/toolchain_info/rustc_cfg.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/toolchain_info/rustc_cfg.rs @@ -24,7 +24,26 @@ pub fn get( } }; - let rustc_cfgs = rustc_cfgs.lines().map(crate::parse_cfg).collect::<Result<Vec<_>, _>>(); + // These are unstable but the standard libraries gate on them. + let unstable = vec![ + r#"target_has_atomic_equal_alignment="8""#, + r#"target_has_atomic_equal_alignment="16""#, + r#"target_has_atomic_equal_alignment="32""#, + r#"target_has_atomic_equal_alignment="64""#, + r#"target_has_atomic_equal_alignment="128""#, + r#"target_has_atomic_equal_alignment="ptr""#, + r#"target_has_atomic_load_store"#, + r#"target_has_atomic_load_store="8""#, + r#"target_has_atomic_load_store="16""#, + r#"target_has_atomic_load_store="32""#, + r#"target_has_atomic_load_store="64""#, + r#"target_has_atomic_load_store="128""#, + r#"target_has_atomic_load_store="ptr""#, + r#"target_thread_local"#, + r#"target_has_atomic"#, + ]; + let rustc_cfgs = + rustc_cfgs.lines().chain(unstable).map(crate::parse_cfg).collect::<Result<Vec<_>, _>>(); match rustc_cfgs { Ok(rustc_cfgs) => { tracing::debug!(?rustc_cfgs, "rustc cfgs found"); @@ -42,13 +61,14 @@ fn rustc_print_cfg( extra_env: &FxHashMap<String, String>, config: QueryConfig<'_>, ) -> anyhow::Result<String> { - const RUSTC_ARGS: [&str; 3] = ["--print", "cfg", "-O"]; + const RUSTC_ARGS: [&str; 2] = ["--print", "cfg"]; let (sysroot, current_dir) = match config { QueryConfig::Cargo(sysroot, cargo_toml) => { let mut cmd = sysroot.tool(Tool::Cargo, cargo_toml.parent()); cmd.envs(extra_env); cmd.env("RUSTC_BOOTSTRAP", "1"); cmd.args(["rustc", "-Z", "unstable-options"]).args(RUSTC_ARGS); + cmd.args(["--", "-O"]); if let Some(target) = target { cmd.args(["--target", target]); } @@ -70,6 +90,7 @@ fn rustc_print_cfg( let mut cmd = sysroot.tool(Tool::Rustc, current_dir); cmd.envs(extra_env); cmd.args(RUSTC_ARGS); + cmd.arg("-O"); if let Some(target) = target { cmd.args(["--target", target]); } |
