141 lines
2.1 KiB
Rust
141 lines
2.1 KiB
Rust
#![feature(custom_attribute)]
|
|
|
|
macro_rules! stmt_mac {
|
|
() => {
|
|
fn b() {}
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
#[attr]
|
|
fn a() {}
|
|
|
|
#[attr] //~ ERROR attributes on expressions are experimental
|
|
{
|
|
|
|
}
|
|
|
|
#[attr]
|
|
5;
|
|
|
|
#[attr]
|
|
stmt_mac!();
|
|
}
|
|
|
|
// Check that cfg works right
|
|
|
|
#[cfg(unset)]
|
|
fn c() {
|
|
#[attr]
|
|
5;
|
|
}
|
|
|
|
#[cfg(not(unset))]
|
|
fn j() {
|
|
#[attr]
|
|
5;
|
|
}
|
|
|
|
#[cfg_attr(not(unset), cfg(unset))]
|
|
fn d() {
|
|
#[attr]
|
|
8;
|
|
}
|
|
|
|
#[cfg_attr(not(unset), cfg(not(unset)))]
|
|
fn i() {
|
|
#[attr]
|
|
8;
|
|
}
|
|
|
|
// check that macro expansion and cfg works right
|
|
|
|
macro_rules! item_mac {
|
|
($e:ident) => {
|
|
fn $e() {
|
|
#[attr]
|
|
42;
|
|
|
|
#[cfg(unset)]
|
|
fn f() {
|
|
#[attr]
|
|
5;
|
|
}
|
|
|
|
#[cfg(not(unset))]
|
|
fn k() {
|
|
#[attr]
|
|
5;
|
|
}
|
|
|
|
#[cfg_attr(not(unset), cfg(unset))]
|
|
fn g() {
|
|
#[attr]
|
|
8;
|
|
}
|
|
|
|
#[cfg_attr(not(unset), cfg(not(unset)))]
|
|
fn h() {
|
|
#[attr]
|
|
8;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
item_mac!(e);
|
|
|
|
// check that the gate visitor works right:
|
|
|
|
extern {
|
|
#[cfg(unset)]
|
|
fn x(a: [u8; #[attr] 5]);
|
|
fn y(a: [u8; #[attr] 5]); //~ ERROR 15701
|
|
}
|
|
|
|
struct Foo;
|
|
impl Foo {
|
|
#[cfg(unset)]
|
|
const X: u8 = #[attr] 5;
|
|
const Y: u8 = #[attr] 5; //~ ERROR 15701
|
|
}
|
|
|
|
trait Bar {
|
|
#[cfg(unset)]
|
|
const X: [u8; #[attr] 5];
|
|
const Y: [u8; #[attr] 5]; //~ ERROR 15701
|
|
}
|
|
|
|
struct Joyce {
|
|
#[cfg(unset)]
|
|
field: [u8; #[attr] 5],
|
|
field2: [u8; #[attr] 5] //~ ERROR 15701
|
|
}
|
|
|
|
struct Walky(
|
|
#[cfg(unset)] [u8; #[attr] 5],
|
|
[u8; #[attr] 5] //~ ERROR 15701
|
|
);
|
|
|
|
enum Mike {
|
|
Happy(
|
|
#[cfg(unset)] [u8; #[attr] 5],
|
|
[u8; #[attr] 5] //~ ERROR 15701
|
|
),
|
|
Angry {
|
|
#[cfg(unset)]
|
|
field: [u8; #[attr] 5],
|
|
field2: [u8; #[attr] 5] //~ ERROR 15701
|
|
}
|
|
}
|
|
|
|
fn pat() {
|
|
match 5 {
|
|
#[cfg(unset)]
|
|
5 => #[attr] (),
|
|
6 => #[attr] (), //~ ERROR 15701
|
|
_ => (),
|
|
}
|
|
}
|