This handles various kinds of errors, but does not allow applying the derive yet. This adds the feature gate `macro_derive`.
20 lines
424 B
Rust
20 lines
424 B
Rust
#![crate_type = "lib"]
|
|
#![feature(macro_attr)]
|
|
|
|
macro_rules! attr {
|
|
attr[$($args:tt)*] { $($body:tt)* } => {
|
|
//~^ ERROR: `attr` rule argument matchers require parentheses
|
|
//~v ERROR: attr:
|
|
compile_error!(concat!(
|
|
"attr: args=\"",
|
|
stringify!($($args)*),
|
|
"\" body=\"",
|
|
stringify!($($body)*),
|
|
"\"",
|
|
));
|
|
};
|
|
}
|
|
|
|
#[attr]
|
|
struct S;
|