about summary refs log tree commit diff
path: root/compiler/rustc_interface/src/queries.rs
diff options
context:
space:
mode:
authorNilstrieb <48135649+Nilstrieb@users.noreply.github.com>2023-03-10 22:39:14 +0100
committerNilstrieb <48135649+Nilstrieb@users.noreply.github.com>2023-06-01 19:17:19 +0200
commita647ba250a65b44574830cb71aab5c0403adf31b (patch)
tree5df6e29286345eba5a8cb0ad29c1eb6974f0bd8c /compiler/rustc_interface/src/queries.rs
parent642c92e63008ffb49f6ad8344e07bfa7d5b0d9bb (diff)
downloadrust-a647ba250a65b44574830cb71aab5c0403adf31b.tar.gz
rust-a647ba250a65b44574830cb71aab5c0403adf31b.zip
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.
Diffstat (limited to 'compiler/rustc_interface/src/queries.rs')
0 files changed, 0 insertions, 0 deletions