rust/tests/ui/cfg/auxiliary/cfged_out.rs
Nilstrieb a647ba250a Remember names of cfg-ed out items to mention them in diagnostics
`#[cfg]`s are frequently used to gate crate content behind cargo
features. This can lead to very confusing errors when features are
missing. For example, `serde` doesn't have the `derive` feature by
default. Therefore, `serde::Serialize` fails to resolve with a generic
error, even though the macro is present in the docs.

This commit adds a list of all stripped item names to metadata. This is
filled during macro expansion and then, through a fed query, persisted
in metadata. The downstream resolver can then access the metadata to
look at possible candidates for mentioning in the errors.

This slightly increases metadata (800k->809k for the feature-heavy
windows crate), but not enough to really matter.
2023-06-01 19:17:19 +02:00

23 lines
420 B
Rust

pub mod inner {
#[cfg(FALSE)]
pub fn uwu() {}
#[cfg(FALSE)]
pub mod doesnt_exist {
pub fn hello() {}
}
pub mod wrong {
#[cfg(feature = "suggesting me fails the test!!")]
pub fn meow() {}
}
pub mod right {
#[cfg(feature = "what-a-cool-feature")]
pub fn meow() {}
}
}
#[cfg(i_dont_exist_and_you_can_do_nothing_about_it)]
pub fn vanished() {}