File: attr-macros-positional-rejection.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg3-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, sid, trixie
  • size: 893,396 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (49 lines) | stat: -rw-r--r-- 1,116 bytes parent folder | download | duplicates (3)
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,
    };
}