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.
19 lines
542 B
Rust
19 lines
542 B
Rust
macro_rules! values {
|
|
($($token:ident($value:literal) $(as $inner:ty)? => $attr:meta,)*) => {
|
|
#[derive(Debug)]
|
|
pub enum TokenKind {
|
|
$(
|
|
#[$attr]
|
|
$token $($inner)? = $value,
|
|
)*
|
|
}
|
|
};
|
|
}
|
|
//~^^^^^ ERROR expected one of `(`, `,`, `=`, `{`, or `}`, found type `(String)`
|
|
//~| ERROR macro expansion ignores type `(String)` and any tokens following
|
|
|
|
values!(STRING(1) as (String) => cfg(test),);
|
|
//~^ ERROR expected one of `!` or `::`, found `<eof>`
|
|
|
|
fn main() {}
|