Rollup merge of #98147 - est31:bootstrap_cfg_flag, r=Mark-Simulacrum
Make #[cfg(bootstrap)] not error in proc macros on later stages As was discovered in https://github.com/rust-lang/rust/pull/93628#issuecomment-1154697627, adding #[cfg(bootstrap)] to a rust-internal proc macro crate would yield an unexpected cfg name error, at least on later stages wher the bootstrap cfg arg wasn't set. rustc already passes arguments to mark bootstrap as expected, however the means of delivery through the RUSTFLAGS env var is unable to reach proc macro crates, as described in the issue linked in the code this commit touches. This wouldn't be an issue for cfg args that get passed through RUSTFLAGS, as they would never become *active* either, so any usage of one of these flags in a proc macro's code would legitimately yield a lint warning. But since dc30258, rust takes extra measures to pass --cfg=bootstrap even in proc macros, by passing it via the wrapper. Thus, we need to send the flags to mark bootstrap as expected also from the wrapper, so that #[cfg(bootstrap)] also works from proc macros. I want to thank `Urgau` and `jplatte` for helping me find the cause of this. ❤️
This commit is contained in:
commit
97a7a3c9ea
@ -127,12 +127,18 @@ fn main() {
|
||||
}
|
||||
}
|
||||
|
||||
if stage == "0" {
|
||||
// Cargo doesn't pass RUSTFLAGS to proc_macros:
|
||||
// https://github.com/rust-lang/cargo/issues/4423
|
||||
// Set `--cfg=bootstrap` explicitly instead.
|
||||
// Thus, if we are on stage 0, we explicitly set `--cfg=bootstrap`.
|
||||
// We also declare that the flag is expected, which is mainly needed for
|
||||
// later stages so that they don't warn about #[cfg(bootstrap)],
|
||||
// but enabling it for stage 0 too lets any warnings, if they occur,
|
||||
// occur more early on, e.g. about #[cfg(bootstrap = "foo")].
|
||||
if stage == "0" {
|
||||
cmd.arg("--cfg=bootstrap");
|
||||
}
|
||||
cmd.arg("-Zunstable-options");
|
||||
cmd.arg("--check-cfg=values(bootstrap)");
|
||||
}
|
||||
|
||||
if let Ok(map) = env::var("RUSTC_DEBUGINFO_MAP") {
|
||||
|
Loading…
x
Reference in New Issue
Block a user