1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
//! Check that certain positions (listed below) only permit *non-macro* attributes and reject
//! attribute macros:
//!
//! - Enum variants
//! - Struct fields
//! - Field in a struct pattern
//! - Match arm
//! - Field in struct initialization expression
enum FooEnum {
#[test]
//~^ ERROR expected non-macro attribute, found attribute macro
Bar(i32),
}
struct FooStruct {
#[test]
//~^ ERROR expected non-macro attribute, found attribute macro
bar: i32,
}
fn main() {
let foo_enum_bar = FooEnum::Bar(1);
match foo_enum_bar {
FooEnum::Bar(x) => {},
_ => {}
}
let foo_struct = FooStruct { bar: 1 };
match foo_struct {
FooStruct {
#[test] bar
//~^ ERROR expected non-macro attribute, found attribute macro
} => {}
}
match 1 {
0 => {}
#[test]
//~^ ERROR expected non-macro attribute, found attribute macro
_ => {}
}
let _another_foo_struct = FooStruct {
#[test]
//~^ ERROR expected non-macro attribute, found attribute macro
bar: 1,
};
}
|