expand: Pick `cfg`s and `cfg_attrs` one by one, like other attributes This is a rebase of https://github.com/rust-lang/rust/pull/83354, but without any language-changing parts ~(except for https://github.com/rust-lang/rust/pull/84110)~, i.e. the attribute expansion order is the same. This is a pre-requisite for any other changes making cfg attributes closer to regular macro attributes - Possibly changing their expansion order (https://github.com/rust-lang/rust/issues/83331) - Keeping macro backtraces for cfg attributes, or otherwise making them visible after expansion without keeping them in place literally (https://github.com/rust-lang/rust/pull/84110). Two exceptions to the "one by one" behavior are: - cfgs eagerly expanded by `derive` and `cfg_eval`, they are still expanded in a batch, that's by design. - cfgs at the crate root, they are currently expanded not during the main expansion pass, but before that, during `#![feature]` collection. I'll try to disentangle that logic later in a separate PR. r? `@Aaron1011` |
||
|---|---|---|
| .. | ||
| mbe | ||
| mut_visit | ||
| parse | ||
| tokenstream | ||
| base.rs | ||
| build.rs | ||
| config.rs | ||
| expand.rs | ||
| lib.rs | ||
| mbe.rs | ||
| module.rs | ||
| placeholders.rs | ||
| proc_macro.rs | ||
| proc_macro_server.rs | ||
| tests.rs | ||