mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 23:34:48 +00:00
a647ba250a
`#[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.
25 lines
569 B
Plaintext
25 lines
569 B
Plaintext
error[E0425]: cannot find function `bar` in module `a`
|
|
--> $DIR/macro-outer-attributes.rs:18:8
|
|
|
|
|
LL | a::bar();
|
|
| ^^^ not found in `a`
|
|
|
|
|
note: found an item that was configured out
|
|
--> $DIR/macro-outer-attributes.rs:9:14
|
|
|
|
|
LL | pub fn bar() { });
|
|
| ^^^
|
|
help: consider importing this function
|
|
|
|
|
LL + use b::bar;
|
|
|
|
|
help: if you import `bar`, refer to it directly
|
|
|
|
|
LL - a::bar();
|
|
LL + bar();
|
|
|
|
|
|
|
error: aborting due to previous error
|
|
|
|
For more information about this error, try `rustc --explain E0425`.
|