a201fab208
By using `token_descr`, as is done for many other errors, we can get slightly better descriptions in error messages, e.g. "macro expansion ignores token `let` and any following" becomes "macro expansion ignores keyword `let` and any tokens following". This will be more important once invisible delimiters start being mentioned in error messages -- without this commit, that leads to error messages such as "error at ``" because invisible delimiters are pretty printed as an empty string.
21 lines
539 B
Rust
21 lines
539 B
Rust
macro_rules! arm {
|
|
($pattern:pat => $block:block) => {
|
|
$pattern => $block
|
|
//~^ ERROR macro expansion ignores `=>` and any tokens following
|
|
//~| NOTE the usage of `arm!` is likely invalid in pattern context
|
|
//~| NOTE macros cannot expand to match arms
|
|
};
|
|
}
|
|
|
|
fn main() {
|
|
let x = Some(1);
|
|
match x {
|
|
Some(1) => {},
|
|
arm!(None => {}),
|
|
//~^ NOTE caused by the macro expansion here
|
|
//~| ERROR `match` arm with no body
|
|
Some(2) => {},
|
|
_ => {},
|
|
};
|
|
}
|