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.
29 lines
671 B
Rust
29 lines
671 B
Rust
//! Attributes producing expressions in invalid locations
|
|
|
|
//@ aux-build:attr-stmt-expr.rs
|
|
|
|
#![feature(proc_macro_hygiene)]
|
|
#![feature(stmt_expr_attributes)]
|
|
|
|
extern crate attr_stmt_expr;
|
|
use attr_stmt_expr::{duplicate, no_output};
|
|
|
|
fn main() {
|
|
let _ = #[no_output] "Hello, world!";
|
|
//~^ ERROR expected expression, found end of macro arguments
|
|
|
|
let _ = #[duplicate] "Hello, world!";
|
|
//~^ ERROR macro expansion ignores `,` and any tokens following
|
|
|
|
let _ = {
|
|
#[no_output]
|
|
"Hello, world!"
|
|
};
|
|
|
|
let _ = {
|
|
#[duplicate]
|
|
//~^ ERROR macro expansion ignores `,` and any tokens following
|
|
"Hello, world!"
|
|
};
|
|
}
|