about summary refs log tree commit diff
path: root/tests/ui/resolve/attr-macros-positional-rejection.rs
blob: 11382ff13998d0cc7928db6d0128743b6a03e858 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! Check that certain positions (listed below) only permit *non-macro* attributes and reject
//! attribute macros:
//!
//! - Enum variants
//! - Struct fields
//! - Field in a struct pattern
//! - Match arm
//! - Field in struct initialization expression

enum FooEnum {
    #[test]
    //~^ ERROR expected non-macro attribute, found attribute macro
    Bar(i32),
}

struct FooStruct {
    #[test]
    //~^ ERROR expected non-macro attribute, found attribute macro
    bar: i32,
}

fn main() {
    let foo_enum_bar = FooEnum::Bar(1);
    match foo_enum_bar {
        FooEnum::Bar(x) => {},
        _ => {}
    }

    let foo_struct = FooStruct { bar: 1 };
    match foo_struct {
        FooStruct {
            #[test] bar
            //~^ ERROR expected non-macro attribute, found attribute macro
        } => {}
    }

    match 1 {
        0 => {}
        #[test]
        //~^ ERROR expected non-macro attribute, found attribute macro
        _ => {}
    }

    let _another_foo_struct = FooStruct {
        #[test]
        //~^ ERROR expected non-macro attribute, found attribute macro
        bar: 1,
    };
}