diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2020-11-14 14:47:14 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2021-02-07 20:08:45 +0300 |
| commit | dbdbd30bf2cb0d48c8bbce83c2458592664dbb18 (patch) | |
| tree | 92877e16f45e3cf927ffc4296e0f90c48ec036f5 /src | |
| parent | ae00b62ceb7eaf1f02f5289ab233bf7e0e8060d5 (diff) | |
| download | rust-dbdbd30bf2cb0d48c8bbce83c2458592664dbb18.tar.gz rust-dbdbd30bf2cb0d48c8bbce83c2458592664dbb18.zip | |
expand/resolve: Turn `#[derive]` into a regular macro attribute
Diffstat (limited to 'src')
41 files changed, 823 insertions, 594 deletions
diff --git a/src/rustdoc-json-types/lib.rs b/src/rustdoc-json-types/lib.rs index f4b8dc9a3ad..297fc95006b 100644 --- a/src/rustdoc-json-types/lib.rs +++ b/src/rustdoc-json-types/lib.rs @@ -96,8 +96,8 @@ pub struct Deprecation { pub note: Option<String>, } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum Visibility { Public, /// For the most part items are private by default. The exceptions are associated items of @@ -112,8 +112,8 @@ pub enum Visibility { }, } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum GenericArgs { /// <'a, 32, B: Copy, C = u32> AngleBracketed { args: Vec<GenericArg>, bindings: Vec<TypeBinding> }, @@ -121,8 +121,8 @@ pub enum GenericArgs { Parenthesized { inputs: Vec<Type>, output: Option<Type> }, } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum GenericArg { Lifetime(String), Type(Type), @@ -144,8 +144,8 @@ pub struct TypeBinding { pub binding: TypeBindingKind, } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum TypeBindingKind { Equality(Type), Constraint(Vec<GenericBound>), @@ -154,8 +154,8 @@ pub enum TypeBindingKind { #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] pub struct Id(pub String); -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum ItemKind { Module, ExternCrate, @@ -184,8 +184,8 @@ pub enum ItemKind { Keyword, } -#[serde(untagged)] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(untagged)] pub enum ItemEnum { ModuleItem(Module), ExternCrateItem { @@ -264,17 +264,17 @@ pub struct Enum { pub impls: Vec<Id>, } +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "snake_case")] #[serde(tag = "variant_kind", content = "variant_inner")] -#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] pub enum Variant { Plain, Tuple(Vec<Type>), Struct(Vec<Id>), } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum StructType { Plain, Tuple, @@ -310,24 +310,24 @@ pub struct GenericParamDef { pub kind: GenericParamDefKind, } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum GenericParamDefKind { Lifetime, Type { bounds: Vec<GenericBound>, default: Option<Type> }, Const(Type), } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum WherePredicate { BoundPredicate { ty: Type, bounds: Vec<GenericBound> }, RegionPredicate { lifetime: String, bounds: Vec<GenericBound> }, EqPredicate { lhs: Type, rhs: Type }, } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum GenericBound { TraitBound { #[serde(rename = "trait")] @@ -339,17 +339,17 @@ pub enum GenericBound { Outlives(String), } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum TraitBoundModifier { None, Maybe, MaybeConst, } +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "snake_case")] #[serde(tag = "kind", content = "inner")] -#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] pub enum Type { /// Structs, enums, and traits ResolvedPath { @@ -448,8 +448,8 @@ pub struct Impl { pub blanket_impl: Option<Type>, } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub struct Import { /// The full path being imported. pub span: String, @@ -468,8 +468,8 @@ pub struct ProcMacro { pub helpers: Vec<String>, } -#[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum MacroKind { /// A bang macro `foo!()`. Bang, diff --git a/src/test/run-make-fulldeps/simd-ffi/simd.rs b/src/test/run-make-fulldeps/simd-ffi/simd.rs index 717da367fee..d11cfd77c5b 100644 --- a/src/test/run-make-fulldeps/simd-ffi/simd.rs +++ b/src/test/run-make-fulldeps/simd-ffi/simd.rs @@ -75,3 +75,8 @@ auto trait Freeze {} macro_rules! Copy { () => {}; } +#[macro_export] +#[rustc_builtin_macro] +macro_rules! derive { + () => {}; +} diff --git a/src/test/ui/derives/derive-deadlock.rs b/src/test/ui/derives/derive-deadlock.rs new file mode 100644 index 00000000000..0137b1e5bfb --- /dev/null +++ b/src/test/ui/derives/derive-deadlock.rs @@ -0,0 +1,6 @@ +use std as derive; + +#[derive(Default)] //~ ERROR cannot determine resolution for the attribute macro `derive` +struct S; + +fn main() {} diff --git a/src/test/ui/derives/derive-deadlock.stderr b/src/test/ui/derives/derive-deadlock.stderr new file mode 100644 index 00000000000..8d062491c6a --- /dev/null +++ b/src/test/ui/derives/derive-deadlock.stderr @@ -0,0 +1,10 @@ +error: cannot determine resolution for the attribute macro `derive` + --> $DIR/derive-deadlock.rs:3:3 + | +LL | #[derive(Default)] + | ^^^^^^ + | + = note: import resolution is stuck, try simplifying macro imports + +error: aborting due to previous error + diff --git a/src/test/ui/derives/derive-multiple-with-packed.rs b/src/test/ui/derives/derive-multiple-with-packed.rs new file mode 100644 index 00000000000..e762ee357ca --- /dev/null +++ b/src/test/ui/derives/derive-multiple-with-packed.rs @@ -0,0 +1,10 @@ +// check-pass + +#[derive(Clone, Copy)] +#[derive(Debug)] // OK, even if `Copy` is in the different `#[derive]` +#[repr(packed)] +struct CacheRecordHeader { + field: u64, +} + +fn main() {} diff --git a/src/test/ui/derives/deriving-meta-empty-trait-list.rs b/src/test/ui/derives/deriving-meta-empty-trait-list.rs index 4f2e31e8efb..0306ce717d0 100644 --- a/src/test/ui/derives/deriving-meta-empty-trait-list.rs +++ b/src/test/ui/derives/deriving-meta-empty-trait-list.rs @@ -1,6 +1,8 @@ +// check-pass + #![deny(unused)] -#[derive()] //~ ERROR unused attribute +#[derive()] // OK struct _Bar; pub fn main() {} diff --git a/src/test/ui/derives/deriving-meta-empty-trait-list.stderr b/src/test/ui/derives/deriving-meta-empty-trait-list.stderr deleted file mode 100644 index 1fd7d58c86a..00000000000 --- a/src/test/ui/derives/deriving-meta-empty-trait-list.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error: unused attribute - --> $DIR/deriving-meta-empty-trait-list.rs:3:1 - | -LL | #[derive()] - | ^^^^^^^^^^^ - | -note: the lint level is defined here - --> $DIR/deriving-meta-empty-trait-list.rs:1:9 - | -LL | #![deny(unused)] - | ^^^^^^ - = note: `#[deny(unused_attributes)]` implied by `#[deny(unused)]` - -error: aborting due to previous error - diff --git a/src/test/ui/derives/issue-36617.rs b/src/test/ui/derives/issue-36617.rs index 1102f3c4640..08fc82e91f6 100644 --- a/src/test/ui/derives/issue-36617.rs +++ b/src/test/ui/derives/issue-36617.rs @@ -1,4 +1,3 @@ -#![derive(Copy)] //~ ERROR `derive` may only be applied to structs, enums and unions - //~| ERROR cannot determine resolution for the derive macro `Copy` +#![derive(Copy)] //~ ERROR cannot determine resolution for the attribute macro `derive` fn main() {} diff --git a/src/test/ui/derives/issue-36617.stderr b/src/test/ui/derives/issue-36617.stderr index dc6ef169259..0716764b427 100644 --- a/src/test/ui/derives/issue-36617.stderr +++ b/src/test/ui/derives/issue-36617.stderr @@ -1,17 +1,10 @@ -error[E0774]: `derive` may only be applied to structs, enums and unions - --> $DIR/issue-36617.rs:1:1 +error: cannot determine resolution for the attribute macro `derive` + --> $DIR/issue-36617.rs:1:4 | LL | #![derive(Copy)] - | ^^^^^^^^^^^^^^^^ help: try an outer attribute: `#[derive(Copy)]` - -error: cannot determine resolution for the derive macro `Copy` - --> $DIR/issue-36617.rs:1:11 - | -LL | #![derive(Copy)] - | ^^^^ + | ^^^^^^ | = note: import resolution is stuck, try simplifying macro imports -error: aborting due to 2 previous errors +error: aborting due to previous error -For more information about this error, try `rustc --explain E0774`. diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-derive.rs b/src/test/ui/feature-gates/issue-43106-gating-of-derive.rs index c5d9e0db4d3..5404b8c04bb 100644 --- a/src/test/ui/feature-gates/issue-43106-gating-of-derive.rs +++ b/src/test/ui/feature-gates/issue-43106-gating-of-derive.rs @@ -6,6 +6,7 @@ mod derive { mod inner { #![derive(Debug)] } //~^ ERROR `derive` may only be applied to structs, enums and unions + //~| ERROR inner macro attributes are unstable #[derive(Debug)] //~^ ERROR `derive` may only be applied to structs, enums and unions diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-derive.stderr b/src/test/ui/feature-gates/issue-43106-gating-of-derive.stderr index ffec76f409e..9b1f4f46219 100644 --- a/src/test/ui/feature-gates/issue-43106-gating-of-derive.stderr +++ b/src/test/ui/feature-gates/issue-43106-gating-of-derive.stderr @@ -4,30 +4,40 @@ error[E0774]: `derive` may only be applied to structs, enums and unions LL | #[derive(Debug)] | ^^^^^^^^^^^^^^^^ +error[E0658]: inner macro attributes are unstable + --> $DIR/issue-43106-gating-of-derive.rs:7:20 + | +LL | mod inner { #![derive(Debug)] } + | ^^^^^^ + | + = note: see issue #54726 <https://github.com/rust-lang/rust/issues/54726> for more information + = help: add `#![feature(custom_inner_attributes)]` to the crate attributes to enable + error[E0774]: `derive` may only be applied to structs, enums and unions --> $DIR/issue-43106-gating-of-derive.rs:7:17 | LL | mod inner { #![derive(Debug)] } - | ^^^^^^^^^^^^^^^^^ help: try an outer attribute: `#[derive(Debug)]` + | ^^^^^^^^^^^^^^^^^ error[E0774]: `derive` may only be applied to structs, enums and unions - --> $DIR/issue-43106-gating-of-derive.rs:10:5 + --> $DIR/issue-43106-gating-of-derive.rs:11:5 | LL | #[derive(Debug)] | ^^^^^^^^^^^^^^^^ error[E0774]: `derive` may only be applied to structs, enums and unions - --> $DIR/issue-43106-gating-of-derive.rs:23:5 + --> $DIR/issue-43106-gating-of-derive.rs:24:5 | LL | #[derive(Debug)] | ^^^^^^^^^^^^^^^^ error[E0774]: `derive` may only be applied to structs, enums and unions - --> $DIR/issue-43106-gating-of-derive.rs:27:5 + --> $DIR/issue-43106-gating-of-derive.rs:28:5 | LL | #[derive(Debug)] | ^^^^^^^^^^^^^^^^ -error: aborting due to 5 previous errors +error: aborting due to 6 previous errors -For more information about this error, try `rustc --explain E0774`. +Some errors have detailed explanations: E0658, E0774. +For more information about an error, try `rustc --explain E0658`. diff --git a/src/test/ui/issues/issue-49934-errors.rs b/src/test/ui/issues/issue-49934-errors.rs index bf95f8fa7e1..dd14bac5e3a 100644 --- a/src/test/ui/issues/issue-49934-errors.rs +++ b/src/test/ui/issues/issue-49934-errors.rs @@ -1,11 +1,8 @@ -fn foo<#[derive(Debug)] T>() { -//~^ ERROR `derive` may only be applied to structs, enums and unions +fn foo<#[derive(Debug)] T>() { //~ ERROR expected non-macro attribute, found attribute macro match 0 { - #[derive(Debug)] - //~^ ERROR `derive` may only be applied to structs, enums and unions + #[derive(Debug)] //~ ERROR expected non-macro attribute, found attribute macro _ => (), } } -fn main() { -} +fn main() {} diff --git a/src/test/ui/issues/issue-49934-errors.stderr b/src/test/ui/issues/issue-49934-errors.stderr index 71cd2d30342..8c4c54170a1 100644 --- a/src/test/ui/issues/issue-49934-errors.stderr +++ b/src/test/ui/issues/issue-49934-errors.stderr @@ -1,15 +1,14 @@ -error[E0774]: `derive` may only be applied to structs, enums and unions - --> $DIR/issue-49934-errors.rs:1:8 +error: expected non-macro attribute, found attribute macro `derive` + --> $DIR/issue-49934-errors.rs:1:10 | LL | fn foo<#[derive(Debug)] T>() { - | ^^^^^^^^^^^^^^^^ + | ^^^^^^ not a non-macro attribute -error[E0774]: `derive` may only be applied to structs, enums and unions - --> $DIR/issue-49934-errors.rs:4:9 +error: expected non-macro attribute, found attribute macro `derive` + --> $DIR/issue-49934-errors.rs:3:11 | LL | #[derive(Debug)] - | ^^^^^^^^^^^^^^^^ + | ^^^^^^ not a non-macro attribute error: aborting due to 2 previous errors -For more information about this error, try `rustc --explain E0774`. diff --git a/src/test/ui/issues/issue-49934.rs b/src/test/ui/issues/issue-49934.rs index 5b253750db0..ec73e670634 100644 --- a/src/test/ui/issues/issue-49934.rs +++ b/src/test/ui/issues/issue-49934.rs @@ -1,7 +1,4 @@ -// check-pass - #![feature(stmt_expr_attributes)] -#![warn(unused_attributes)] //~ NOTE the lint level is defined here fn main() { // fold_stmt (Item) @@ -10,26 +7,24 @@ fn main() { struct Foo; // fold_stmt (Mac) - #[derive(Debug)] - //~^ WARN `#[derive]` does nothing on macro invocations - //~| NOTE this may become a hard error in a future release + #[derive(Debug)] //~ ERROR `derive` may only be applied to structs, enums and unions println!("Hello, world!"); // fold_stmt (Semi) - #[derive(Debug)] //~ WARN unused attribute + #[derive(Debug)] //~ ERROR `derive` may only be applied to structs, enums and unions "Hello, world!"; // fold_stmt (Local) - #[derive(Debug)] //~ WARN unused attribute + #[derive(Debug)] //~ ERROR `derive` may only be applied to structs, enums and unions let _ = "Hello, world!"; // visit_expr let _ = #[derive(Debug)] "Hello, world!"; - //~^ WARN unused attribute + //~^ ERROR `derive` may only be applied to structs, enums and unions let _ = [ // filter_map_expr - #[derive(Debug)] //~ WARN unused attribute - "Hello, world!" + #[derive(Debug)] //~ ERROR `derive` may only be applied to structs, enums and unions + "Hello, world!", ]; } diff --git a/src/test/ui/issues/issue-49934.stderr b/src/test/ui/issues/issue-49934.stderr index 8a5596521ec..7746ad287ab 100644 --- a/src/test/ui/issues/issue-49934.stderr +++ b/src/test/ui/issues/issue-49934.stderr @@ -1,40 +1,33 @@ -warning: `#[derive]` does nothing on macro invocations - --> $DIR/issue-49934.rs:13:5 +error[E0774]: `derive` may only be applied to structs, enums and unions + --> $DIR/issue-49934.rs:10:5 | LL | #[derive(Debug)] | ^^^^^^^^^^^^^^^^ - | - = note: this may become a hard error in a future release -warning: unused attribute - --> $DIR/issue-49934.rs:19:5 +error[E0774]: `derive` may only be applied to structs, enums and unions + --> $DIR/issue-49934.rs:14:5 | LL | #[derive(Debug)] | ^^^^^^^^^^^^^^^^ - | -note: the lint level is defined here - --> $DIR/issue-49934.rs:4:9 - | -LL | #![warn(unused_attributes)] - | ^^^^^^^^^^^^^^^^^ -warning: unused attribute - --> $DIR/issue-49934.rs:23:5 +error[E0774]: `derive` may only be applied to structs, enums and unions + --> $DIR/issue-49934.rs:18:5 | LL | #[derive(Debug)] | ^^^^^^^^^^^^^^^^ -warning: unused attribute - --> $DIR/issue-49934.rs:27:13 +error[E0774]: `derive` may only be applied to structs, enums and unions + --> $DIR/issue-49934.rs:22:13 | LL | let _ = #[derive(Debug)] "Hello, world!"; | ^^^^^^^^^^^^^^^^ -warning: unused attribute - --> $DIR/issue-49934.rs:32:9 +error[E0774]: `derive` may only be applied to structs, enums and unions + --> $DIR/issue-49934.rs:27:9 | LL | #[derive(Debug)] | ^^^^^^^^^^^^^^^^ -warning: 5 warnings emitted +error: aborting due to 5 previous errors +For more information about this error, try `rustc --explain E0774`. diff --git a/src/test/ui/macros/builtin-std-paths-fail.stderr b/src/test/ui/macros/builtin-std-paths-fail.stderr index 9831e46ec30..4f1a76b0d6e 100644 --- a/src/test/ui/macros/builtin-std-paths-fail.stderr +++ b/src/test/ui/macros/builtin-std-paths-fail.stderr @@ -1,3 +1,15 @@ +error[E0433]: failed to resolve: could not find `RustcDecodable` in `core` + --> $DIR/builtin-std-paths-fail.rs:2:11 + | +LL | core::RustcDecodable, + | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `core` + +error[E0433]: failed to resolve: could not find `RustcDecodable` in `core` + --> $DIR/builtin-std-paths-fail.rs:4:11 + | +LL | core::RustcDecodable, + | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `core` + error[E0433]: failed to resolve: could not find `bench` in `core` --> $DIR/builtin-std-paths-fail.rs:7:9 | @@ -23,28 +35,28 @@ LL | #[core::test] | ^^^^ could not find `test` in `core` error[E0433]: failed to resolve: could not find `RustcDecodable` in `core` - --> $DIR/builtin-std-paths-fail.rs:2:11 + --> $DIR/builtin-std-paths-fail.rs:4:11 | LL | core::RustcDecodable, | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `core` error[E0433]: failed to resolve: could not find `RustcDecodable` in `core` - --> $DIR/builtin-std-paths-fail.rs:4:11 + --> $DIR/builtin-std-paths-fail.rs:2:11 | LL | core::RustcDecodable, | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `core` -error[E0433]: failed to resolve: could not find `RustcDecodable` in `core` - --> $DIR/builtin-std-paths-fail.rs:4:11 +error[E0433]: failed to resolve: could not find `RustcDecodable` in `std` + --> $DIR/builtin-std-paths-fail.rs:14:10 | -LL | core::RustcDecodable, - | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `core` +LL | std::RustcDecodable, + | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `std` -error[E0433]: failed to resolve: could not find `RustcDecodable` in `core` - --> $DIR/builtin-std-paths-fail.rs:2:11 +error[E0433]: failed to resolve: could not find `RustcDecodable` in `std` + --> $DIR/builtin-std-paths-fail.rs:16:10 | -LL | core::RustcDecodable, - | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `core` +LL | std::RustcDecodable, + | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `std` error[E0433]: failed to resolve: could not find `bench` in `std` --> $DIR/builtin-std-paths-fail.rs:19:8 @@ -71,18 +83,6 @@ LL | #[std::test] | ^^^^ could not find `test` in `std` error[E0433]: failed to resolve: could not find `RustcDecodable` in `std` - --> $DIR/builtin-std-paths-fail.rs:14:10 - | -LL | std::RustcDecodable, - | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `std` - -error[E0433]: failed to resolve: could not find `RustcDecodable` in `std` - --> $DIR/builtin-std-paths-fail.rs:16:10 - | -LL | std::RustcDecodable, - | ^^^^^^^^^^^^^^ could not find `RustcDecodable` in `std` - -error[E0433]: failed to resolve: could not find `RustcDecodable` in `std` --> $DIR/builtin-std-paths-fail.rs:16:10 | LL | std::RustcDecodable, diff --git a/src/test/ui/malformed/issue-69341-malformed-derive-inert.rs b/src/test/ui/malformed/issue-69341-malformed-derive-inert.rs index 1fd7cddc7c9..fc4c3f4e64b 100644 --- a/src/test/ui/malformed/issue-69341-malformed-derive-inert.rs +++ b/src/test/ui/malformed/issue-69341-malformed-derive-inert.rs @@ -1,9 +1,6 @@ fn main() {} struct CLI { - #[derive(parse())] - //~^ ERROR traits in `#[derive(...)]` don't accept arguments - //~| ERROR cannot find derive macro `parse` in this scope + #[derive(parse())] //~ ERROR expected non-macro attribute, found attribute macro path: (), - //~^ ERROR `derive` may only be applied to structs, enums and unions } diff --git a/src/test/ui/malformed/issue-69341-malformed-derive-inert.stderr b/src/test/ui/malformed/issue-69341-malformed-derive-inert.stderr index db40ce07530..04f7ebe019e 100644 --- a/src/test/ui/malformed/issue-69341-malformed-derive-inert.stderr +++ b/src/test/ui/malformed/issue-69341-malformed-derive-inert.stderr @@ -1,21 +1,8 @@ -error: traits in `#[derive(...)]` don't accept arguments - --> $DIR/issue-69341-malformed-derive-inert.rs:4:19 +error: expected non-macro attribute, found attribute macro `derive` + --> $DIR/issue-69341-malformed-derive-inert.rs:4:7 | LL | #[derive(parse())] - | ^^ help: remove the arguments + | ^^^^^^ not a non-macro attribute -error[E0774]: `derive` may only be applied to structs, enums and unions - --> $DIR/issue-69341-malformed-derive-inert.rs:7:5 - | -LL | path: (), - | ^^^^^^^^ - -error: cannot find derive macro `parse` in this scope - --> $DIR/issue-69341-malformed-derive-inert.rs:4:14 - | -LL | #[derive(parse())] - | ^^^^^ - -error: aborting due to 3 previous errors +error: aborting due to previous error -For more information about this error, try `rustc --explain E0774`. diff --git a/src/test/ui/malformed/malformed-derive-entry.stderr b/src/test/ui/malformed/malformed-derive-entry.stderr index 63be8f9ca14..365cc099e9d 100644 --- a/src/test/ui/malformed/malformed-derive-entry.stderr +++ b/src/test/ui/malformed/malformed-derive-entry.stderr @@ -14,7 +14,7 @@ error: malformed `derive` attribute input --> $DIR/malformed-derive-entry.rs:11:1 | LL | #[derive] - | ^^^^^^^^^ help: missing traits to be derived: `#[derive(Trait1, Trait2, ...)]` + | ^^^^^^^^^ help: must be of the form: `#[derive(Trait1, Trait2, ...)]` error[E0277]: the trait bound `Test1: Clone` is not satisfied --> $DIR/malformed-derive-entry.rs:1:10 diff --git a/src/test/ui/malformed/malformed-special-attrs.stderr b/src/test/ui/malformed/malformed-special-attrs.stderr index 6f535e03e6a..1764c3969cf 100644 --- a/src/test/ui/malformed/malformed-special-attrs.stderr +++ b/src/test/ui/malformed/malformed-special-attrs.stderr @@ -18,13 +18,13 @@ error: malformed `derive` attribute input --> $DIR/malformed-special-attrs.rs:7:1 | LL | #[derive] - | ^^^^^^^^^ help: missing traits to be derived: `#[derive(Trait1, Trait2, ...)]` + | ^^^^^^^^^ help: must be of the form: `#[derive(Trait1, Trait2, ...)]` error: malformed `derive` attribute input --> $DIR/malformed-special-attrs.rs:10:1 | LL | #[derive = ""] - | ^^^^^^^^^^^^^^ help: missing traits to be derived: `#[derive(Trait1, Trait2, ...)]` + | ^^^^^^^^^^^^^^ help: must be of the form: `#[derive(Trait1, Trait2, ...)]` error: aborting due to 4 previous errors diff --git a/src/test/ui/proc-macro/attribute-after-derive.rs b/src/test/ui/proc-macro/attribute-after-derive.rs new file mode 100644 index 00000000000..0f0f27bff97 --- /dev/null +++ b/src/test/ui/proc-macro/attribute-after-derive.rs @@ -0,0 +1,28 @@ +// Macro attributes are allowed after `#[derive]` and +// `#[derive]` fully configures the item for following attributes. + +// check-pass +// compile-flags: -Z span-debug +// aux-build: test-macros.rs + +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; + +#[macro_use] +extern crate test_macros; + +#[print_attr] +#[derive(Print)] +struct AttributeDerive { + #[cfg(FALSE)] + field: u8, +} + +#[derive(Print)] +#[print_attr] +struct DeriveAttribute { + #[cfg(FALSE)] + field: u8, +} + +fn main() {} diff --git a/src/test/ui/proc-macro/attribute-after-derive.stdout b/src/test/ui/proc-macro/attribute-after-derive.stdout new file mode 100644 index 00000000000..78c58c0a32f --- /dev/null +++ b/src/test/ui/proc-macro/attribute-after-derive.stdout @@ -0,0 +1,148 @@ +PRINT-ATTR INPUT (DISPLAY): #[derive(Print)] struct AttributeDerive { #[cfg(FALSE)] field : u8, } +PRINT-ATTR INPUT (DEBUG): TokenStream [ + Punct { + ch: '#', + spacing: Alone, + span: $DIR/attribute-after-derive.rs:15:1: 15:2 (#0), + }, + Group { + delimiter: Bracket, + stream: TokenStream [ + Ident { + ident: "derive", + span: $DIR/attribute-after-derive.rs:15:3: 15:9 (#0), + }, + Group { + delimiter: Parenthesis, + stream: TokenStream [ + Ident { + ident: "Print", + span: $DIR/attribute-after-derive.rs:15:10: 15:15 (#0), + }, + ], + span: $DIR/attribute-after-derive.rs:15:9: 15:16 (#0), + }, + ], + span: $DIR/attribute-after-derive.rs:15:2: 15:17 (#0), + }, + Ident { + ident: "struct", + span: $DIR/attribute-after-derive.rs:16:1: 16:7 (#0), + }, + Ident { + ident: "AttributeDerive", + span: $DIR/attribute-after-derive.rs:16:8: 16:23 (#0), + }, + Group { + delimiter: Brace, + stream: TokenStream [ + Punct { + ch: '#', + spacing: Alone, + span: $DIR/attribute-after-derive.rs:17:5: 17:6 (#0), + }, + Group { + delimiter: Bracket, + stream: TokenStream [ + Ident { + ident: "cfg", + span: $DIR/attribute-after-derive.rs:17:7: 17:10 (#0), + }, + Group { + delimiter: Parenthesis, + stream: TokenStream [ + Ident { + ident: "FALSE", + span: $DIR/attribute-after-derive.rs:17:11: 17:16 (#0), + }, + ], + span: $DIR/attribute-after-derive.rs:17:10: 17:17 (#0), + }, + ], + span: $DIR/attribute-after-derive.rs:17:6: 17:18 (#0), + }, + Ident { + ident: "field", + span: $DIR/attribute-after-derive.rs:18:5: 18:10 (#0), + }, + Punct { + ch: ':', + spacing: Alone, + span: $DIR/attribute-after-derive.rs:18:10: 18:11 (#0), + }, + Ident { + ident: "u8", + span: $DIR/attribute-after-derive.rs:18:12: 18:14 (#0), + }, + Punct { + ch: ',', + spacing: Alone, + span: $DIR/attribute-after-derive.rs:18:14: 18:15 (#0), + }, + ], + span: $DIR/attribute-after-derive.rs:16:24: 19:2 (#0), + }, +] +PRINT-DERIVE INPUT (DISPLAY): struct AttributeDerive { } +PRINT-DERIVE INPUT (DEBUG): TokenStream [ + Ident { + ident: "struct", + span: $DIR/attribute-after-derive.rs:16:1: 19:2 (#0), + }, + Ident { + ident: "AttributeDerive", + span: $DIR/attribute-after-derive.rs:16:1: 19:2 (#0), + }, + Group { + delimiter: Brace, + stream: TokenStream [], + span: $DIR/attribute-after-derive.rs:16:1: 19:2 (#0), + }, +] +PRINT-ATTR INPUT (DISPLAY): struct DeriveAttribute { } +PRINT-ATTR INPUT (DEBUG): TokenStream [ + Ident { + ident: "struct", + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, + Ident { + ident: "DeriveAttribute", + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, + Group { + delimiter: Brace, + stream: TokenStream [], + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, +] +PRINT-DERIVE INPUT (DISPLAY): #[print_attr] struct DeriveAttribute { } +PRINT-DERIVE INPUT (DEBUG): TokenStream [ + Punct { + ch: '#', + spacing: Alone, + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, + Group { + delimiter: Bracket, + stream: TokenStream [ + Ident { + ident: "print_attr", + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, + ], + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, + Ident { + ident: "struct", + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, + Ident { + ident: "DeriveAttribute", + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, + Group { + delimiter: Brace, + stream: TokenStream [], + span: $DIR/attribute-after-derive.rs:23:1: 26:2 (#0), + }, +] diff --git a/src/test/ui/proc-macro/attribute-order-restricted.rs b/src/test/ui/proc-macro/attribute-order-restricted.rs deleted file mode 100644 index a3d4d23450c..00000000000 --- a/src/test/ui/proc-macro/attribute-order-restricted.rs +++ /dev/null @@ -1,14 +0,0 @@ -// aux-build:test-macros.rs - -#[macro_use] -extern crate test_macros; - -#[identity_attr] // OK -#[derive(Clone)] -struct Before; - -#[derive(Clone)] -#[identity_attr] //~ ERROR macro attributes must be placed before `#[derive]` -struct After; - -fn main() {} diff --git a/src/test/ui/proc-macro/attribute-order-restricted.stderr b/src/test/ui/proc-macro/attribute-order-restricted.stderr deleted file mode 100644 index 9ca8a443e40..00000000000 --- a/src/test/ui/proc-macro/attribute-order-restricted.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: macro attributes must be placed before `#[derive]` - --> $DIR/attribute-order-restricted.rs:11:1 - | -LL | #[identity_attr] - | ^^^^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/proc-macro/derive-helper-shadowing.rs b/src/test/ui/proc-macro/derive-helper-shadowing.rs index 6147e96a74b..80d982d2504 100644 --- a/src/test/ui/proc-macro/derive-helper-shadowing.rs +++ b/src/test/ui/proc-macro/derive-helper-shadowing.rs @@ -17,6 +17,8 @@ macro_rules! gen_helper_use { } #[empty_helper] //~ ERROR `empty_helper` is ambiguous + //~| WARN derive helper attribute is used before it is introduced + //~| WARN this was previously accepted #[derive(Empty)] struct S { #[empty_helper] // OK, no ambiguity, derive helpers have highest priority diff --git a/src/test/ui/proc-macro/derive-helper-shadowing.stderr b/src/test/ui/proc-macro/derive-helper-shadowing.stderr index f82f49aa775..a49df9f2d4a 100644 --- a/src/test/ui/proc-macro/derive-helper-shadowing.stderr +++ b/src/test/ui/proc-macro/derive-helper-shadowing.stderr @@ -1,17 +1,17 @@ error: cannot use a derive helper attribute through an import - --> $DIR/derive-helper-shadowing.rs:40:15 + --> $DIR/derive-helper-shadowing.rs:42:15 | LL | #[renamed] | ^^^^^^^ | note: the derive helper attribute imported here - --> $DIR/derive-helper-shadowing.rs:39:17 + --> $DIR/derive-helper-shadowing.rs:41:17 | LL | use empty_helper as renamed; | ^^^^^^^^^^^^^^^^^^^^^^^ error: cannot find attribute `empty_helper` in this scope - --> $DIR/derive-helper-shadowing.rs:36:22 + --> $DIR/derive-helper-shadowing.rs:38:22 | LL | #[derive(GenHelperUse)] | ^^^^^^^^^^^^ @@ -30,13 +30,13 @@ LL | gen_helper_use!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error[E0659]: `empty_helper` is ambiguous (name vs any other name during import resolution) - --> $DIR/derive-helper-shadowing.rs:24:13 + --> $DIR/derive-helper-shadowing.rs:26:13 | LL | use empty_helper; | ^^^^^^^^^^^^ ambiguous name | note: `empty_helper` could refer to the derive helper attribute defined here - --> $DIR/derive-helper-shadowing.rs:20:10 + --> $DIR/derive-helper-shadowing.rs:22:10 | LL | #[derive(Empty)] | ^^^^^ @@ -54,7 +54,7 @@ LL | #[empty_helper] | ^^^^^^^^^^^^ ambiguous name | note: `empty_helper` could refer to the derive helper attribute defined here - --> $DIR/derive-helper-shadowing.rs:20:10 + --> $DIR/derive-helper-shadowing.rs:22:10 | LL | #[derive(Empty)] | ^^^^^ @@ -65,6 +65,19 @@ LL | use test_macros::empty_attr as empty_helper; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = help: use `crate::empty_helper` to refer to this attribute macro unambiguously -error: aborting due to 5 previous errors +warning: derive helper attribute is used before it is introduced + --> $DIR/derive-helper-shadowing.rs:19:3 + | +LL | #[empty_helper] + | ^^^^^^^^^^^^ +... +LL | #[derive(Empty)] + | ----- the attribute is introduced here + | + = note: `#[warn(legacy_derive_helpers)]` on by default + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202> + +error: aborting due to 5 previous errors; 1 warning emitted For more information about this error, try `rustc --explain E0659`. diff --git a/src/test/ui/proc-macro/derive-helper-vs-legacy.rs b/src/test/ui/proc-macro/derive-helper-vs-legacy.rs new file mode 100644 index 00000000000..98836bcb893 --- /dev/null +++ b/src/test/ui/proc-macro/derive-helper-vs-legacy.rs @@ -0,0 +1,12 @@ +// check-pass +// aux-build:test-macros.rs + +#[macro_use] +extern crate test_macros; + +#[derive(Empty)] +#[empty_helper] // OK, this is both derive helper and legacy derive helper +#[derive(Empty)] +struct S; + +fn main() {} diff --git a/src/test/ui/proc-macro/derive-multiple-with-packed.rs b/src/test/ui/proc-macro/derive-multiple-with-packed.rs new file mode 100644 index 00000000000..23578aa0e9f --- /dev/null +++ b/src/test/ui/proc-macro/derive-multiple-with-packed.rs @@ -0,0 +1,11 @@ +// check-pass + +#[derive(Clone, Copy)] +#[derive(Debug)] // OK, even if `Copy` is in the different `#[derive]` +#[derive(PartialEq)] // OK too +#[repr(packed)] +struct CacheRecordHeader { + field: u64, +} + +fn main() {} diff --git a/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs b/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs index 3a1c56efce8..40c42d82f68 100644 --- a/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs +++ b/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.rs @@ -4,8 +4,10 @@ extern crate test_macros; use test_macros::empty_attr as empty_helper; -#[derive(Empty)] #[empty_helper] //~ ERROR `empty_helper` is ambiguous + //~| WARN derive helper attribute is used before it is introduced + //~| WARN this was previously accepted +#[derive(Empty)] struct S; fn main() {} diff --git a/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr b/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr index 012fb105b12..ceb6d789785 100644 --- a/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr +++ b/src/test/ui/proc-macro/helper-attr-blocked-by-import-ambig.stderr @@ -1,11 +1,11 @@ error[E0659]: `empty_helper` is ambiguous (derive helper attribute vs any other name) - --> $DIR/helper-attr-blocked-by-import-ambig.rs:8:3 + --> $DIR/helper-attr-blocked-by-import-ambig.rs:7:3 | LL | #[empty_helper] | ^^^^^^^^^^^^ ambiguous name | note: `empty_helper` could refer to the derive helper attribute defined here - --> $DIR/helper-attr-blocked-by-import-ambig.rs:7:10 + --> $DIR/helper-attr-blocked-by-import-ambig.rs:10:10 | LL | #[derive(Empty)] | ^^^^^ @@ -16,6 +16,19 @@ LL | use test_macros::empty_attr as empty_helper; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = help: use `crate::empty_helper` to refer to this attribute macro unambiguously -error: aborting due to previous error +warning: derive helper attribute is used before it is introduced + --> $DIR/helper-attr-blocked-by-import-ambig.rs:7:3 + | +LL | #[empty_helper] + | ^^^^^^^^^^^^ +... +LL | #[derive(Empty)] + | ----- the attribute is introduced here + | + = note: `#[warn(legacy_derive_helpers)]` on by default + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202> + +error: aborting due to previous error; 1 warning emitted For more information about this error, try `rustc --explain E0659`. diff --git a/src/test/ui/proc-macro/issue-75930-derive-cfg.rs b/src/test/ui/proc-macro/issue-75930-derive-cfg.rs index a051d23bac0..649e7318403 100644 --- a/src/test/ui/proc-macro/issue-75930-derive-cfg.rs +++ b/src/test/ui/proc-macro/issue-75930-derive-cfg.rs @@ -13,7 +13,8 @@ #[macro_use] extern crate test_macros; -#[print_helper(a)] +#[print_helper(a)] //~ WARN derive helper attribute is used before it is introduced + //~| WARN this was previously accepted #[cfg_attr(not(FALSE), allow(dead_code))] #[print_attr] #[derive(Print)] diff --git a/src/test/ui/proc-macro/issue-75930-derive-cfg.stderr b/src/test/ui/proc-macro/issue-75930-derive-cfg.stderr new file mode 100644 index 00000000000..5227da7d766 --- /dev/null +++ b/src/test/ui/proc-macro/issue-75930-derive-cfg.stderr @@ -0,0 +1,15 @@ +warning: derive helper attribute is used before it is introduced + --> $DIR/issue-75930-derive-cfg.rs:16:3 + | +LL | #[print_helper(a)] + | ^^^^^^^^^^^^ +... +LL | #[derive(Print)] + | ----- the attribute is introduced here + | + = note: `#[warn(legacy_derive_helpers)]` on by default + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202> + +warning: 1 warning emitted + diff --git a/src/test/ui/proc-macro/issue-75930-derive-cfg.stdout b/src/test/ui/proc-macro/issue-75930-derive-cfg.stdout index 5f513684cfa..19aa4dfb60e 100644 --- a/src/test/ui/proc-macro/issue-75930-derive-cfg.stdout +++ b/src/test/ui/proc-macro/issue-75930-derive-cfg.stdout @@ -26,77 +26,77 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:17:1: 17:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:18:1: 18:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "allow", - span: $DIR/issue-75930-derive-cfg.rs:17:24: 17:29 (#0), + span: $DIR/issue-75930-derive-cfg.rs:18:24: 18:29 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "dead_code", - span: $DIR/issue-75930-derive-cfg.rs:17:30: 17:39 (#0), + span: $DIR/issue-75930-derive-cfg.rs:18:30: 18:39 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:17:29: 17:40 (#0), + span: $DIR/issue-75930-derive-cfg.rs:18:29: 18:40 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:17:1: 17:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:18:1: 18:2 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:19:1: 19:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:20:1: 20:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "derive", - span: $DIR/issue-75930-derive-cfg.rs:19:3: 19:9 (#0), + span: $DIR/issue-75930-derive-cfg.rs:20:3: 20:9 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "Print", - span: $DIR/issue-75930-derive-cfg.rs:19:10: 19:15 (#0), + span: $DIR/issue-75930-derive-cfg.rs:20:10: 20:15 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:19:9: 19:16 (#0), + span: $DIR/issue-75930-derive-cfg.rs:20:9: 20:16 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:19:2: 19:17 (#0), + span: $DIR/issue-75930-derive-cfg.rs:20:2: 20:17 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:20:1: 20:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:21:1: 21:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "print_helper", - span: $DIR/issue-75930-derive-cfg.rs:20:3: 20:15 (#0), + span: $DIR/issue-75930-derive-cfg.rs:21:3: 21:15 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "b", - span: $DIR/issue-75930-derive-cfg.rs:20:16: 20:17 (#0), + span: $DIR/issue-75930-derive-cfg.rs:21:16: 21:17 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:20:15: 20:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:21:15: 21:18 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:20:2: 20:19 (#0), + span: $DIR/issue-75930-derive-cfg.rs:21:2: 21:19 (#0), }, Punct { ch: '#', @@ -125,59 +125,59 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ }, Ident { ident: "struct", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 21:7 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 22:7 (#0), }, Ident { ident: "Foo", - span: $DIR/issue-75930-derive-cfg.rs:21:8: 21:11 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:8: 22:11 (#0), }, Punct { ch: '<', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:21:11: 21:12 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:11: 22:12 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:12: 21:13 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:12: 22:13 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:21:14: 21:17 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:14: 22:17 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:21:18: 21:23 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:18: 22:23 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:17: 21:24 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:17: 22:24 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:13: 21:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:13: 22:25 (#0), }, Ident { ident: "A", - span: $DIR/issue-75930-derive-cfg.rs:21:26: 21:27 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:26: 22:27 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:27: 21:28 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:27: 22:28 (#0), }, Ident { ident: "B", - span: $DIR/issue-75930-derive-cfg.rs:21:29: 21:30 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:29: 22:30 (#0), }, Punct { ch: '>', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:30: 21:31 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:30: 22:31 (#0), }, Group { delimiter: Brace, @@ -185,128 +185,128 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:22:5: 22:6 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:5: 23:6 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:22:7: 22:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:7: 23:10 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:22:11: 22:16 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:11: 23:16 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:22:10: 22:17 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:10: 23:17 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:22:6: 22:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:6: 23:18 (#0), }, Ident { ident: "first", - span: $DIR/issue-75930-derive-cfg.rs:22:19: 22:24 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:19: 23:24 (#0), }, Punct { ch: ':', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:22:24: 22:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:24: 23:25 (#0), }, Ident { ident: "String", - span: $DIR/issue-75930-derive-cfg.rs:22:26: 22:32 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:26: 23:32 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:22:32: 22:33 (#0), + span: $DIR/issue-75930-derive-cfg.rs:23:32: 23:33 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:23:5: 23:6 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:5: 24:6 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg_attr", - span: $DIR/issue-75930-derive-cfg.rs:23:7: 23:15 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:7: 24:15 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:23:16: 23:21 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:16: 24:21 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:23:21: 23:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:21: 24:22 (#0), }, Ident { ident: "deny", - span: $DIR/issue-75930-derive-cfg.rs:23:23: 23:27 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:23: 24:27 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "warnings", - span: $DIR/issue-75930-derive-cfg.rs:23:28: 23:36 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:28: 24:36 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:23:27: 23:37 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:27: 24:37 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:23:15: 23:38 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:15: 24:38 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:23:6: 23:39 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:6: 24:39 (#0), }, Ident { ident: "second", - span: $DIR/issue-75930-derive-cfg.rs:23:40: 23:46 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:40: 24:46 (#0), }, Punct { ch: ':', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:23:46: 23:47 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:46: 24:47 (#0), }, Ident { ident: "bool", - span: $DIR/issue-75930-derive-cfg.rs:23:48: 23:52 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:48: 24:52 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:23:52: 23:53 (#0), + span: $DIR/issue-75930-derive-cfg.rs:24:52: 24:53 (#0), }, Ident { ident: "third", - span: $DIR/issue-75930-derive-cfg.rs:24:5: 24:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:25:5: 25:10 (#0), }, Punct { ch: ':', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:24:10: 24:11 (#0), + span: $DIR/issue-75930-derive-cfg.rs:25:10: 25:11 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "u8", - span: $DIR/issue-75930-derive-cfg.rs:24:13: 24:15 (#0), + span: $DIR/issue-75930-derive-cfg.rs:25:13: 25:15 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:24:15: 24:16 (#0), + span: $DIR/issue-75930-derive-cfg.rs:25:15: 25:16 (#0), }, Group { delimiter: Brace, @@ -314,145 +314,145 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:25:9: 25:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:26:9: 26:10 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:25:11: 25:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:26:11: 26:14 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:25:15: 25:20 (#0), + span: $DIR/issue-75930-derive-cfg.rs:26:15: 26:20 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:25:14: 25:21 (#0), + span: $DIR/issue-75930-derive-cfg.rs:26:14: 26:21 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:25:10: 25:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:26:10: 26:22 (#0), }, Ident { ident: "struct", - span: $DIR/issue-75930-derive-cfg.rs:25:23: 25:29 (#0), + span: $DIR/issue-75930-derive-cfg.rs:26:23: 26:29 (#0), }, Ident { ident: "Bar", - span: $DIR/issue-75930-derive-cfg.rs:25:30: 25:33 (#0), + span: $DIR/issue-75930-derive-cfg.rs:26:30: 26:33 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:25:33: 25:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:26:33: 26:34 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:26:9: 26:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:9: 27:10 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:26:11: 26:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:11: 27:14 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:26:15: 26:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:15: 27:18 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:26:19: 26:24 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:19: 27:24 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:26:18: 26:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:18: 27:25 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:26:14: 26:26 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:14: 27:26 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:26:10: 26:27 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:10: 27:27 (#0), }, Ident { ident: "struct", - span: $DIR/issue-75930-derive-cfg.rs:26:28: 26:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:28: 27:34 (#0), }, Ident { ident: "Inner", - span: $DIR/issue-75930-derive-cfg.rs:26:35: 26:40 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:35: 27:40 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:26:40: 26:41 (#0), + span: $DIR/issue-75930-derive-cfg.rs:27:40: 27:41 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:27:9: 27:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:9: 28:10 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:27:11: 27:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:11: 28:14 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:27:15: 27:20 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:15: 28:20 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:27:14: 27:21 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:14: 28:21 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:27:10: 27:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:10: 28:22 (#0), }, Ident { ident: "let", - span: $DIR/issue-75930-derive-cfg.rs:27:23: 27:26 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:23: 28:26 (#0), }, Ident { ident: "a", - span: $DIR/issue-75930-derive-cfg.rs:27:27: 27:28 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:27: 28:28 (#0), }, Punct { ch: '=', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:27:29: 27:30 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:29: 28:30 (#0), }, Literal { kind: Integer, symbol: "25", suffix: None, - span: $DIR/issue-75930-derive-cfg.rs:27:31: 27:33 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:31: 28:33 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:27:33: 27:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:28:33: 28:34 (#0), }, Ident { ident: "match", - span: $DIR/issue-75930-derive-cfg.rs:28:9: 28:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:29:9: 29:14 (#0), }, Ident { ident: "true", - span: $DIR/issue-75930-derive-cfg.rs:28:15: 28:19 (#0), + span: $DIR/issue-75930-derive-cfg.rs:29:15: 29:19 (#0), }, Group { delimiter: Brace, @@ -460,194 +460,194 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:29:13: 29:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:13: 30:14 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:29:15: 29:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:15: 30:18 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:29:19: 29:24 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:19: 30:24 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:29:18: 29:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:18: 30:25 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:29:14: 29:26 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:14: 30:26 (#0), }, Ident { ident: "true", - span: $DIR/issue-75930-derive-cfg.rs:29:27: 29:31 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:27: 30:31 (#0), }, Punct { ch: '=', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:29:32: 29:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:32: 30:34 (#0), }, Punct { ch: '>', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:29:32: 29:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:32: 30:34 (#0), }, Group { delimiter: Brace, stream: TokenStream [], - span: $DIR/issue-75930-derive-cfg.rs:29:35: 29:37 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:35: 30:37 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:29:37: 29:38 (#0), + span: $DIR/issue-75930-derive-cfg.rs:30:37: 30:38 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:30:13: 30:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:13: 31:14 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg_attr", - span: $DIR/issue-75930-derive-cfg.rs:30:15: 30:23 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:15: 31:23 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:30:24: 30:27 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:24: 31:27 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:30:28: 30:33 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:28: 31:33 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:30:27: 30:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:27: 31:34 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:30:34: 30:35 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:34: 31:35 (#0), }, Ident { ident: "allow", - span: $DIR/issue-75930-derive-cfg.rs:30:36: 30:41 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:36: 31:41 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "warnings", - span: $DIR/issue-75930-derive-cfg.rs:30:42: 30:50 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:42: 31:50 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:30:41: 30:51 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:41: 31:51 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:30:23: 30:52 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:23: 31:52 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:30:14: 30:53 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:14: 31:53 (#0), }, Ident { ident: "false", - span: $DIR/issue-75930-derive-cfg.rs:30:54: 30:59 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:54: 31:59 (#0), }, Punct { ch: '=', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:30:60: 30:62 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:60: 31:62 (#0), }, Punct { ch: '>', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:30:60: 30:62 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:60: 31:62 (#0), }, Group { delimiter: Brace, stream: TokenStream [], - span: $DIR/issue-75930-derive-cfg.rs:30:63: 30:65 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:63: 31:65 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:30:65: 30:66 (#0), + span: $DIR/issue-75930-derive-cfg.rs:31:65: 31:66 (#0), }, Ident { ident: "_", - span: $DIR/issue-75930-derive-cfg.rs:31:13: 31:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:32:13: 32:14 (#0), }, Punct { ch: '=', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:31:15: 31:17 (#0), + span: $DIR/issue-75930-derive-cfg.rs:32:15: 32:17 (#0), }, Punct { ch: '>', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:31:15: 31:17 (#0), + span: $DIR/issue-75930-derive-cfg.rs:32:15: 32:17 (#0), }, Group { delimiter: Brace, stream: TokenStream [], - span: $DIR/issue-75930-derive-cfg.rs:31:18: 31:20 (#0), + span: $DIR/issue-75930-derive-cfg.rs:32:18: 32:20 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:28:20: 32:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:29:20: 33:10 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:32:10: 32:11 (#0), + span: $DIR/issue-75930-derive-cfg.rs:33:10: 33:11 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:34:9: 34:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:35:9: 35:10 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "print_helper", - span: $DIR/issue-75930-derive-cfg.rs:34:11: 34:23 (#0), + span: $DIR/issue-75930-derive-cfg.rs:35:11: 35:23 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "should_be_removed", - span: $DIR/issue-75930-derive-cfg.rs:34:24: 34:41 (#0), + span: $DIR/issue-75930-derive-cfg.rs:35:24: 35:41 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:34:23: 34:42 (#0), + span: $DIR/issue-75930-derive-cfg.rs:35:23: 35:42 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:34:10: 34:43 (#0), + span: $DIR/issue-75930-derive-cfg.rs:35:10: 35:43 (#0), }, Ident { ident: "fn", - span: $DIR/issue-75930-derive-cfg.rs:35:9: 35:11 (#0), + span: $DIR/issue-75930-derive-cfg.rs:36:9: 36:11 (#0), }, Ident { ident: "removed_fn", - span: $DIR/issue-75930-derive-cfg.rs:35:12: 35:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:36:12: 36:22 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [], - span: $DIR/issue-75930-derive-cfg.rs:35:22: 35:24 (#0), + span: $DIR/issue-75930-derive-cfg.rs:36:22: 36:24 (#0), }, Group { delimiter: Brace, @@ -655,108 +655,108 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:36:13: 36:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:37:13: 37:14 (#0), }, Punct { ch: '!', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:36:14: 36:15 (#0), + span: $DIR/issue-75930-derive-cfg.rs:37:14: 37:15 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:36:16: 36:19 (#0), + span: $DIR/issue-75930-derive-cfg.rs:37:16: 37:19 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:36:20: 36:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:37:20: 37:25 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:36:19: 36:26 (#0), + span: $DIR/issue-75930-derive-cfg.rs:37:19: 37:26 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:36:15: 36:27 (#0), + span: $DIR/issue-75930-derive-cfg.rs:37:15: 37:27 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:35:25: 37:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:36:25: 38:10 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:39:9: 39:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:9: 40:10 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "print_helper", - span: $DIR/issue-75930-derive-cfg.rs:39:11: 39:23 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:11: 40:23 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "c", - span: $DIR/issue-75930-derive-cfg.rs:39:24: 39:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:24: 40:25 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:39:23: 39:26 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:23: 40:26 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:39:10: 39:27 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:10: 40:27 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:39:28: 39:29 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:28: 40:29 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:39:30: 39:33 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:30: 40:33 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:39:34: 39:37 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:34: 40:37 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:39:38: 39:43 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:38: 40:43 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:39:37: 39:44 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:37: 40:44 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:39:33: 39:45 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:33: 40:45 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:39:29: 39:46 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:29: 40:46 (#0), }, Ident { ident: "fn", - span: $DIR/issue-75930-derive-cfg.rs:39:47: 39:49 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:47: 40:49 (#0), }, Ident { ident: "kept_fn", - span: $DIR/issue-75930-derive-cfg.rs:39:50: 39:57 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:50: 40:57 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [], - span: $DIR/issue-75930-derive-cfg.rs:39:57: 39:59 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:57: 40:59 (#0), }, Group { delimiter: Brace, @@ -764,82 +764,82 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:40:13: 40:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:41:13: 41:14 (#0), }, Punct { ch: '!', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:40:14: 40:15 (#0), + span: $DIR/issue-75930-derive-cfg.rs:41:14: 41:15 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:40:16: 40:19 (#0), + span: $DIR/issue-75930-derive-cfg.rs:41:16: 41:19 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:40:20: 40:23 (#0), + span: $DIR/issue-75930-derive-cfg.rs:41:20: 41:23 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:40:24: 40:29 (#0), + span: $DIR/issue-75930-derive-cfg.rs:41:24: 41:29 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:40:23: 40:30 (#0), + span: $DIR/issue-75930-derive-cfg.rs:41:23: 41:30 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:40:19: 40:31 (#0), + span: $DIR/issue-75930-derive-cfg.rs:41:19: 41:31 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:40:15: 40:32 (#0), + span: $DIR/issue-75930-derive-cfg.rs:41:15: 41:32 (#0), }, Ident { ident: "let", - span: $DIR/issue-75930-derive-cfg.rs:41:13: 41:16 (#0), + span: $DIR/issue-75930-derive-cfg.rs:42:13: 42:16 (#0), }, Ident { ident: "my_val", - span: $DIR/issue-75930-derive-cfg.rs:41:17: 41:23 (#0), + span: $DIR/issue-75930-derive-cfg.rs:42:17: 42:23 (#0), }, Punct { ch: '=', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:41:24: 41:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:42:24: 42:25 (#0), }, Ident { ident: "true", - span: $DIR/issue-75930-derive-cfg.rs:41:26: 41:30 (#0), + span: $DIR/issue-75930-derive-cfg.rs:42:26: 42:30 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:41:30: 41:31 (#0), + span: $DIR/issue-75930-derive-cfg.rs:42:30: 42:31 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:39:60: 42:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:40:60: 43:10 (#0), }, Ident { ident: "enum", - span: $DIR/issue-75930-derive-cfg.rs:44:9: 44:13 (#0), + span: $DIR/issue-75930-derive-cfg.rs:45:9: 45:13 (#0), }, Ident { ident: "TupleEnum", - span: $DIR/issue-75930-derive-cfg.rs:44:14: 44:23 (#0), + span: $DIR/issue-75930-derive-cfg.rs:45:14: 45:23 (#0), }, Group { delimiter: Brace, stream: TokenStream [ Ident { ident: "Foo", - span: $DIR/issue-75930-derive-cfg.rs:45:13: 45:16 (#0), + span: $DIR/issue-75930-derive-cfg.rs:46:13: 46:16 (#0), }, Group { delimiter: Parenthesis, @@ -847,166 +847,166 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:46:17: 46:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:47:17: 47:18 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:46:19: 46:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:47:19: 47:22 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:46:23: 46:28 (#0), + span: $DIR/issue-75930-derive-cfg.rs:47:23: 47:28 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:46:22: 46:29 (#0), + span: $DIR/issue-75930-derive-cfg.rs:47:22: 47:29 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:46:18: 46:30 (#0), + span: $DIR/issue-75930-derive-cfg.rs:47:18: 47:30 (#0), }, Ident { ident: "u8", - span: $DIR/issue-75930-derive-cfg.rs:46:31: 46:33 (#0), + span: $DIR/issue-75930-derive-cfg.rs:47:31: 47:33 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:46:33: 46:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:47:33: 47:34 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:47:17: 47:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:48:17: 48:18 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:47:19: 47:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:48:19: 48:22 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:47:23: 47:28 (#0), + span: $DIR/issue-75930-derive-cfg.rs:48:23: 48:28 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:47:22: 47:29 (#0), + span: $DIR/issue-75930-derive-cfg.rs:48:22: 48:29 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:47:18: 47:30 (#0), + span: $DIR/issue-75930-derive-cfg.rs:48:18: 48:30 (#0), }, Ident { ident: "bool", - span: $DIR/issue-75930-derive-cfg.rs:47:31: 47:35 (#0), + span: $DIR/issue-75930-derive-cfg.rs:48:31: 48:35 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:47:35: 47:36 (#0), + span: $DIR/issue-75930-derive-cfg.rs:48:35: 48:36 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:48:17: 48:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:17: 49:18 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:48:19: 48:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:19: 49:22 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:48:23: 48:26 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:23: 49:26 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:48:27: 48:32 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:27: 49:32 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:48:26: 48:33 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:26: 49:33 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:48:22: 48:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:22: 49:34 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:48:18: 48:35 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:18: 49:35 (#0), }, Ident { ident: "i32", - span: $DIR/issue-75930-derive-cfg.rs:48:36: 48:39 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:36: 49:39 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:48:39: 48:40 (#0), + span: $DIR/issue-75930-derive-cfg.rs:49:39: 49:40 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:49:17: 49:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:50:17: 50:18 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:49:19: 49:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:50:19: 50:22 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:49:23: 49:28 (#0), + span: $DIR/issue-75930-derive-cfg.rs:50:23: 50:28 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:49:22: 49:29 (#0), + span: $DIR/issue-75930-derive-cfg.rs:50:22: 50:29 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:49:18: 49:30 (#0), + span: $DIR/issue-75930-derive-cfg.rs:50:18: 50:30 (#0), }, Ident { ident: "String", - span: $DIR/issue-75930-derive-cfg.rs:49:31: 49:37 (#0), + span: $DIR/issue-75930-derive-cfg.rs:50:31: 50:37 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:49:37: 49:38 (#0), + span: $DIR/issue-75930-derive-cfg.rs:50:37: 50:38 (#0), }, Ident { ident: "u8", - span: $DIR/issue-75930-derive-cfg.rs:49:39: 49:41 (#0), + span: $DIR/issue-75930-derive-cfg.rs:50:39: 50:41 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:45:16: 50:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:46:16: 51:14 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:44:24: 51:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:45:24: 52:10 (#0), }, Ident { ident: "struct", - span: $DIR/issue-75930-derive-cfg.rs:53:9: 53:15 (#0), + span: $DIR/issue-75930-derive-cfg.rs:54:9: 54:15 (#0), }, Ident { ident: "TupleStruct", - span: $DIR/issue-75930-derive-cfg.rs:53:16: 53:27 (#0), + span: $DIR/issue-75930-derive-cfg.rs:54:16: 54:27 (#0), }, Group { delimiter: Parenthesis, @@ -1014,184 +1014,184 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:54:13: 54:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:55:13: 55:14 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:54:15: 54:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:55:15: 55:18 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:54:19: 54:24 (#0), + span: $DIR/issue-75930-derive-cfg.rs:55:19: 55:24 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:54:18: 54:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:55:18: 55:25 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:54:14: 54:26 (#0), + span: $DIR/issue-75930-derive-cfg.rs:55:14: 55:26 (#0), }, Ident { ident: "String", - span: $DIR/issue-75930-derive-cfg.rs:54:27: 54:33 (#0), + span: $DIR/issue-75930-derive-cfg.rs:55:27: 55:33 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:54:33: 54:34 (#0), + span: $DIR/issue-75930-derive-cfg.rs:55:33: 55:34 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:55:13: 55:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:13: 56:14 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:55:15: 55:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:15: 56:18 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:55:19: 55:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:19: 56:22 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:55:23: 55:28 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:23: 56:28 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:55:22: 55:29 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:22: 56:29 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:55:18: 55:30 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:18: 56:30 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:55:14: 55:31 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:14: 56:31 (#0), }, Ident { ident: "i32", - span: $DIR/issue-75930-derive-cfg.rs:55:32: 55:35 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:32: 56:35 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:55:35: 55:36 (#0), + span: $DIR/issue-75930-derive-cfg.rs:56:35: 56:36 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:56:13: 56:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:57:13: 57:14 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:56:15: 56:18 (#0), + span: $DIR/issue-75930-derive-cfg.rs:57:15: 57:18 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:56:19: 56:24 (#0), + span: $DIR/issue-75930-derive-cfg.rs:57:19: 57:24 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:56:18: 56:25 (#0), + span: $DIR/issue-75930-derive-cfg.rs:57:18: 57:25 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:56:14: 56:26 (#0), + span: $DIR/issue-75930-derive-cfg.rs:57:14: 57:26 (#0), }, Ident { ident: "bool", - span: $DIR/issue-75930-derive-cfg.rs:56:27: 56:31 (#0), + span: $DIR/issue-75930-derive-cfg.rs:57:27: 57:31 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:56:31: 56:32 (#0), + span: $DIR/issue-75930-derive-cfg.rs:57:31: 57:32 (#0), }, Ident { ident: "u8", - span: $DIR/issue-75930-derive-cfg.rs:57:13: 57:15 (#0), + span: $DIR/issue-75930-derive-cfg.rs:58:13: 58:15 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:53:27: 58:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:54:27: 59:10 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:58:10: 58:11 (#0), + span: $DIR/issue-75930-derive-cfg.rs:59:10: 59:11 (#0), }, Literal { kind: Integer, symbol: "0", suffix: None, - span: $DIR/issue-75930-derive-cfg.rs:60:9: 60:10 (#0), + span: $DIR/issue-75930-derive-cfg.rs:61:9: 61:10 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:24:17: 61:6 (#0), + span: $DIR/issue-75930-derive-cfg.rs:25:17: 62:6 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:24:12: 61:7 (#0), + span: $DIR/issue-75930-derive-cfg.rs:25:12: 62:7 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:61:7: 61:8 (#0), + span: $DIR/issue-75930-derive-cfg.rs:62:7: 62:8 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:62:5: 62:6 (#0), + span: $DIR/issue-75930-derive-cfg.rs:63:5: 63:6 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "print_helper", - span: $DIR/issue-75930-derive-cfg.rs:62:7: 62:19 (#0), + span: $DIR/issue-75930-derive-cfg.rs:63:7: 63:19 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "d", - span: $DIR/issue-75930-derive-cfg.rs:62:20: 62:21 (#0), + span: $DIR/issue-75930-derive-cfg.rs:63:20: 63:21 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:62:19: 62:22 (#0), + span: $DIR/issue-75930-derive-cfg.rs:63:19: 63:22 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:62:6: 62:23 (#0), + span: $DIR/issue-75930-derive-cfg.rs:63:6: 63:23 (#0), }, Ident { ident: "fourth", - span: $DIR/issue-75930-derive-cfg.rs:63:5: 63:11 (#0), + span: $DIR/issue-75930-derive-cfg.rs:64:5: 64:11 (#0), }, Punct { ch: ':', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:63:11: 63:12 (#0), + span: $DIR/issue-75930-derive-cfg.rs:64:11: 64:12 (#0), }, Ident { ident: "B", - span: $DIR/issue-75930-derive-cfg.rs:63:13: 63:14 (#0), + span: $DIR/issue-75930-derive-cfg.rs:64:13: 64:14 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:32: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:32: 65:2 (#0), }, ] PRINT-DERIVE INPUT (DISPLAY): #[allow(dead_code)] #[print_helper(b)] #[print_helper(a)] struct Foo < B > @@ -1211,141 +1211,141 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "allow", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "dead_code", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "print_helper", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "b", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "print_helper", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "a", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "struct", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "Foo", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '<', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "B", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '>', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Brace, stream: TokenStream [ Ident { ident: "second", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ':', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "bool", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "third", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ':', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "u8", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Brace, @@ -1353,58 +1353,58 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "struct", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "Inner", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "match", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "true", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Brace, @@ -1412,146 +1412,146 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "allow", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "warnings", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "false", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '=', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '>', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Brace, stream: TokenStream [], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "_", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '=', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '>', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Brace, stream: TokenStream [], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "print_helper", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "c", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "fn", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "kept_fn", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Brace, @@ -1559,82 +1559,82 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Joint, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '!', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "let", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "my_val", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '=', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "true", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "enum", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "TupleEnum", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Brace, stream: TokenStream [ Ident { ident: "Foo", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, @@ -1642,69 +1642,69 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "i32", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "u8", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "struct", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "TupleStruct", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, @@ -1712,120 +1712,120 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "cfg", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "not", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "FALSE", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "i32", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "u8", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ';', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Literal { kind: Integer, symbol: "0", suffix: None, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: '#', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "print_helper", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "d", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "fourth", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ':', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Ident { ident: "B", - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, Punct { ch: ',', spacing: Alone, - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ], - span: $DIR/issue-75930-derive-cfg.rs:21:1: 64:2 (#0), + span: $DIR/issue-75930-derive-cfg.rs:22:1: 65:2 (#0), }, ] diff --git a/src/test/ui/proc-macro/proc-macro-attributes.rs b/src/test/ui/proc-macro/proc-macro-attributes.rs index 6401522bdf8..8d96381b9bd 100644 --- a/src/test/ui/proc-macro/proc-macro-attributes.rs +++ b/src/test/ui/proc-macro/proc-macro-attributes.rs @@ -4,10 +4,18 @@ extern crate derive_b; #[B] //~ ERROR `B` is ambiguous + //~| WARN derive helper attribute is used before it is introduced + //~| WARN this was previously accepted #[C] //~ ERROR cannot find attribute `C` in this scope #[B(D)] //~ ERROR `B` is ambiguous + //~| WARN derive helper attribute is used before it is introduced + //~| WARN this was previously accepted #[B(E = "foo")] //~ ERROR `B` is ambiguous + //~| WARN derive helper attribute is used before it is introduced + //~| WARN this was previously accepted #[B(arbitrary tokens)] //~ ERROR `B` is ambiguous + //~| WARN derive helper attribute is used before it is introduced + //~| WARN this was previously accepted #[derive(B)] struct B; diff --git a/src/test/ui/proc-macro/proc-macro-attributes.stderr b/src/test/ui/proc-macro/proc-macro-attributes.stderr index 3ac93a74852..1ba04258df0 100644 --- a/src/test/ui/proc-macro/proc-macro-attributes.stderr +++ b/src/test/ui/proc-macro/proc-macro-attributes.stderr @@ -1,5 +1,5 @@ error: cannot find attribute `C` in this scope - --> $DIR/proc-macro-attributes.rs:7:3 + --> $DIR/proc-macro-attributes.rs:9:3 | LL | #[C] | ^ help: a derive helper attribute with a similar name exists: `B` @@ -11,7 +11,7 @@ LL | #[B] | ^ ambiguous name | note: `B` could refer to the derive helper attribute defined here - --> $DIR/proc-macro-attributes.rs:11:10 + --> $DIR/proc-macro-attributes.rs:19:10 | LL | #[derive(B)] | ^ @@ -22,13 +22,13 @@ LL | #[macro_use] | ^^^^^^^^^^^^ error[E0659]: `B` is ambiguous (derive helper attribute vs any other name) - --> $DIR/proc-macro-attributes.rs:8:3 + --> $DIR/proc-macro-attributes.rs:10:3 | LL | #[B(D)] | ^ ambiguous name | note: `B` could refer to the derive helper attribute defined here - --> $DIR/proc-macro-attributes.rs:11:10 + --> $DIR/proc-macro-attributes.rs:19:10 | LL | #[derive(B)] | ^ @@ -39,13 +39,13 @@ LL | #[macro_use] | ^^^^^^^^^^^^ error[E0659]: `B` is ambiguous (derive helper attribute vs any other name) - --> $DIR/proc-macro-attributes.rs:9:3 + --> $DIR/proc-macro-attributes.rs:13:3 | LL | #[B(E = "foo")] | ^ ambiguous name | note: `B` could refer to the derive helper attribute defined here - --> $DIR/proc-macro-attributes.rs:11:10 + --> $DIR/proc-macro-attributes.rs:19:10 | LL | #[derive(B)] | ^ @@ -56,13 +56,13 @@ LL | #[macro_use] | ^^^^^^^^^^^^ error[E0659]: `B` is ambiguous (derive helper attribute vs any other name) - --> $DIR/proc-macro-attributes.rs:10:3 + --> $DIR/proc-macro-attributes.rs:16:3 | LL | #[B(arbitrary tokens)] | ^ ambiguous name | note: `B` could refer to the derive helper attribute defined here - --> $DIR/proc-macro-attributes.rs:11:10 + --> $DIR/proc-macro-attributes.rs:19:10 | LL | #[derive(B)] | ^ @@ -72,6 +72,55 @@ note: `B` could also refer to the derive macro imported here LL | #[macro_use] | ^^^^^^^^^^^^ -error: aborting due to 5 previous errors +warning: derive helper attribute is used before it is introduced + --> $DIR/proc-macro-attributes.rs:6:3 + | +LL | #[B] + | ^ +... +LL | #[derive(B)] + | - the attribute is introduced here + | + = note: `#[warn(legacy_derive_helpers)]` on by default + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202> + +warning: derive helper attribute is used before it is introduced + --> $DIR/proc-macro-attributes.rs:10:3 + | +LL | #[B(D)] + | ^ +... +LL | #[derive(B)] + | - the attribute is introduced here + | + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202> + +warning: derive helper attribute is used before it is introduced + --> $DIR/proc-macro-attributes.rs:13:3 + | +LL | #[B(E = "foo")] + | ^ +... +LL | #[derive(B)] + | - the attribute is introduced here + | + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202> + +warning: derive helper attribute is used before it is introduced + --> $DIR/proc-macro-attributes.rs:16:3 + | +LL | #[B(arbitrary tokens)] + | ^ +... +LL | #[derive(B)] + | - the attribute is introduced here + | + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202> + +error: aborting due to 5 previous errors; 4 warnings emitted For more information about this error, try `rustc --explain E0659`. diff --git a/src/test/ui/proc-macro/reserved-macro-names.rs b/src/test/ui/proc-macro/reserved-macro-names.rs index 9f56eccb7a6..c5e71a87dfb 100644 --- a/src/test/ui/proc-macro/reserved-macro-names.rs +++ b/src/test/ui/proc-macro/reserved-macro-names.rs @@ -17,9 +17,3 @@ pub fn cfg_attr(_: TokenStream, input: TokenStream) -> TokenStream { //~^ ERROR name `cfg_attr` is reserved in attribute namespace input } - -#[proc_macro_attribute] -pub fn derive(_: TokenStream, input: TokenStream) -> TokenStream { - //~^ ERROR name `derive` is reserved in attribute namespace - input -} diff --git a/src/test/ui/proc-macro/reserved-macro-names.stderr b/src/test/ui/proc-macro/reserved-macro-names.stderr index f871e43ce51..39bdd03be86 100644 --- a/src/test/ui/proc-macro/reserved-macro-names.stderr +++ b/src/test/ui/proc-macro/reserved-macro-names.stderr @@ -10,11 +10,5 @@ error: name `cfg_attr` is reserved in attribute namespace LL | pub fn cfg_attr(_: TokenStream, input: TokenStream) -> TokenStream { | ^^^^^^^^ -error: name `derive` is reserved in attribute namespace - --> $DIR/reserved-macro-names.rs:22:8 - | -LL | pub fn derive(_: TokenStream, input: TokenStream) -> TokenStream { - | ^^^^^^ - -error: aborting due to 3 previous errors +error: aborting due to 2 previous errors diff --git a/src/test/ui/span/issue-43927-non-ADT-derive.rs b/src/test/ui/span/issue-43927-non-ADT-derive.rs index 8f1599a5abc..840c12e16e1 100644 --- a/src/test/ui/span/issue-43927-non-ADT-derive.rs +++ b/src/test/ui/span/issue-43927-non-ADT-derive.rs @@ -1,10 +1,5 @@ -#![allow(dead_code)] - #![derive(Debug, PartialEq, Eq)] // should be an outer attribute! -//~^ ERROR `derive` may only be applied to structs, enums and unions -//~| ERROR cannot determine resolution for the derive macro `Debug` -//~| ERROR cannot determine resolution for the derive macro `PartialEq` -//~| ERROR cannot determine resolution for the derive macro `Eq` +//~^ ERROR cannot determine resolution for the attribute macro `derive` struct DerivedOn; fn main() {} diff --git a/src/test/ui/span/issue-43927-non-ADT-derive.stderr b/src/test/ui/span/issue-43927-non-ADT-derive.stderr index 85beac535c9..9ef81c5150a 100644 --- a/src/test/ui/span/issue-43927-non-ADT-derive.stderr +++ b/src/test/ui/span/issue-43927-non-ADT-derive.stderr @@ -1,33 +1,10 @@ -error[E0774]: `derive` may only be applied to structs, enums and unions - --> $DIR/issue-43927-non-ADT-derive.rs:3:1 +error: cannot determine resolution for the attribute macro `derive` + --> $DIR/issue-43927-non-ADT-derive.rs:1:4 | LL | #![derive(Debug, PartialEq, Eq)] // should be an outer attribute! - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try an outer attribute: `#[derive(Debug, PartialEq, Eq)]` - -error: cannot determine resolution for the derive macro `Debug` - --> $DIR/issue-43927-non-ADT-derive.rs:3:11 - | -LL | #![derive(Debug, PartialEq, Eq)] // should be an outer attribute! - | ^^^^^ - | - = note: import resolution is stuck, try simplifying macro imports - -error: cannot determine resolution for the derive macro `PartialEq` - --> $DIR/issue-43927-non-ADT-derive.rs:3:18 - | -LL | #![derive(Debug, PartialEq, Eq)] // should be an outer attribute! - | ^^^^^^^^^ - | - = note: import resolution is stuck, try simplifying macro imports - -error: cannot determine resolution for the derive macro `Eq` - --> $DIR/issue-43927-non-ADT-derive.rs:3:29 - | -LL | #![derive(Debug, PartialEq, Eq)] // should be an outer attribute! - | ^^ + | ^^^^^^ | = note: import resolution is stuck, try simplifying macro imports -error: aborting due to 4 previous errors +error: aborting due to previous error -For more information about this error, try `rustc --explain E0774`. diff --git a/src/test/ui/span/macro-ty-params.rs b/src/test/ui/span/macro-ty-params.rs index 713b9eb542c..0a93105b664 100644 --- a/src/test/ui/span/macro-ty-params.rs +++ b/src/test/ui/span/macro-ty-params.rs @@ -9,5 +9,5 @@ macro_rules! foo { () => () } fn main() { foo::<T>!(); //~ ERROR generic arguments in macro path foo::<>!(); //~ ERROR generic arguments in macro path - m!(Default<>); //~ ERROR generic arguments in macro path + m!(Default<>); //~ ERROR unexpected generic arguments in path } diff --git a/src/test/ui/span/macro-ty-params.stderr b/src/test/ui/span/macro-ty-params.stderr index 21683b2fb86..138cd2598a1 100644 --- a/src/test/ui/span/macro-ty-params.stderr +++ b/src/test/ui/span/macro-ty-params.stderr @@ -10,7 +10,7 @@ error: generic arguments in macro path LL | foo::<>!(); | ^^ -error: generic arguments in macro path +error: unexpected generic arguments in path --> $DIR/macro-ty-params.rs:12:15 | LL | m!(Default<>); |
