54 lines
1.3 KiB
Rust
54 lines
1.3 KiB
Rust
//@ aux-build:test-macros.rs
|
|
// gate-test-proc_macro_hygiene
|
|
|
|
#![feature(stmt_expr_attributes)]
|
|
|
|
#[macro_use]
|
|
extern crate test_macros;
|
|
|
|
fn _test_inner() {
|
|
#![empty_attr] //~ ERROR: inner macro attributes are unstable
|
|
}
|
|
|
|
mod _test2_inner {
|
|
#![empty_attr] //~ ERROR: inner macro attributes are unstable
|
|
}
|
|
|
|
#[empty_attr = "y"] //~ ERROR: key-value macro attributes are not supported
|
|
fn _test3() {}
|
|
|
|
fn attrs() {
|
|
// Statement, item
|
|
#[empty_attr] // OK
|
|
struct S;
|
|
|
|
// Statement, macro
|
|
#[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
|
|
println!();
|
|
|
|
// Statement, semi
|
|
#[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
|
|
S;
|
|
|
|
// Statement, local
|
|
#[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
|
|
let _x = 2;
|
|
|
|
// Expr
|
|
let _x = #[identity_attr] 2; //~ ERROR: custom attributes cannot be applied to expressions
|
|
|
|
// Opt expr
|
|
let _x = [#[identity_attr] 2]; //~ ERROR: custom attributes cannot be applied to expressions
|
|
|
|
// Expr macro
|
|
let _x = #[identity_attr] println!();
|
|
//~^ ERROR: custom attributes cannot be applied to expressions
|
|
}
|
|
|
|
fn test_case() {
|
|
#![test] //~ ERROR inner macro attributes are unstable
|
|
//~| WARN this was previously accepted
|
|
}
|
|
|
|
fn main() {}
|