os-rust/src/test/ui/stmt_expr_attrs_no_feature.rs

141 lines
2.4 KiB
Rust
Raw Normal View History

2015-11-24 14:56:20 +01:00
#![feature(custom_attribute)]
macro_rules! stmt_mac {
() => {
fn b() {}
}
}
fn main() {
#[attr]
fn a() {}
#[attr] //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
{
}
#[attr]
2015-11-24 14:56:20 +01:00
5;
#[attr]
2015-11-24 14:56:20 +01:00
stmt_mac!();
}
// Check that cfg works right
#[cfg(unset)]
fn c() {
#[attr]
5;
}
#[cfg(not(unset))]
fn j() {
#[attr]
2015-11-24 14:56:20 +01:00
5;
}
#[cfg_attr(not(unset), cfg(unset))]
fn d() {
#[attr]
8;
}
#[cfg_attr(not(unset), cfg(not(unset)))]
fn i() {
#[attr]
2015-11-24 14:56:20 +01:00
8;
}
// check that macro expansion and cfg works right
macro_rules! item_mac {
($e:ident) => {
fn $e() {
#[attr]
2015-11-24 14:56:20 +01:00
42;
#[cfg(unset)]
fn f() {
#[attr]
5;
}
#[cfg(not(unset))]
fn k() {
#[attr]
2015-11-24 14:56:20 +01:00
5;
}
#[cfg_attr(not(unset), cfg(unset))]
fn g() {
#[attr]
8;
}
#[cfg_attr(not(unset), cfg(not(unset)))]
fn h() {
#[attr]
2015-11-24 14:56:20 +01:00
8;
}
}
}
}
item_mac!(e);
// check that the gate visitor works right:
extern {
#[cfg(unset)]
fn x(a: [u8; #[attr] 5]);
2019-04-10 16:40:12 -07:00
fn y(a: [u8; #[attr] 5]); //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
}
struct Foo;
impl Foo {
#[cfg(unset)]
const X: u8 = #[attr] 5;
2019-04-10 16:40:12 -07:00
const Y: u8 = #[attr] 5; //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
}
trait Bar {
#[cfg(unset)]
const X: [u8; #[attr] 5];
2019-04-10 16:40:12 -07:00
const Y: [u8; #[attr] 5]; //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
}
struct Joyce {
#[cfg(unset)]
field: [u8; #[attr] 5],
2019-04-10 16:40:12 -07:00
field2: [u8; #[attr] 5] //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
}
struct Walky(
#[cfg(unset)] [u8; #[attr] 5],
2019-04-10 16:40:12 -07:00
[u8; #[attr] 5] //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
);
enum Mike {
Happy(
#[cfg(unset)] [u8; #[attr] 5],
2019-04-10 16:40:12 -07:00
[u8; #[attr] 5] //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
),
Angry {
#[cfg(unset)]
field: [u8; #[attr] 5],
2019-04-10 16:40:12 -07:00
field2: [u8; #[attr] 5] //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
}
}
fn pat() {
match 5 {
#[cfg(unset)]
5 => #[attr] (),
2019-04-10 16:40:12 -07:00
6 => #[attr] (), //~ ERROR attributes on expressions are experimental
2015-11-24 14:56:20 +01:00
_ => (),
}
}