// compile-flags: --crate-type=lib // https://github.com/rust-lang/rust/issues/113766 macro_rules! field { ($name:ident:$type:ty) => { $name:$type }; } macro_rules! variant { ($name:ident) => { $name } } struct Struct { //~^ NOTE while parsing this struct field!(bar:u128), //~^ NOTE macros cannot expand to struct fields //~| ERROR unexpected token: `!` //~| NOTE unexpected token after this a: u32, b: u32, field!(recovers:()), } enum EnumVariant { variant!(whoops), //~^ NOTE macros cannot expand to enum variants //~| ERROR unexpected token: `!` //~| NOTE unexpected token after this U32, F64, variant!(recovers), //~^ NOTE macros cannot expand to enum variants //~| ERROR unexpected token: `!` //~| NOTE unexpected token after this Data { //~ NOTE while parsing this struct field!(x:u32), //~^ NOTE macros cannot expand to struct fields //~| ERROR unexpected token: `!` //~| NOTE unexpected token after this } } enum EnumVariantField { Named { //~ NOTE while parsing this struct field!(oopsies:()), //~^ NOTE macros cannot expand to struct fields //~| ERROR unexpected token: `!` //~| unexpected token after this field!(oopsies2:()), }, } union Union { //~^ NOTE while parsing this union A: u32, field!(oopsies:()), //~^ NOTE macros cannot expand to union fields //~| ERROR unexpected token: `!` //~| NOTE unexpected token after this B: u32, field!(recovers:()), } // https://github.com/rust-lang/rust/issues/114636 #[derive(Debug)] pub struct Lazy { //~^ NOTE while parsing this struct unreachable!() //~^ NOTE macros cannot expand to struct fields //~| ERROR unexpected token: `!` //~| NOTE unexpected token after this } fn main() {}