]> git.proxmox.com Git - rustc.git/blame - src/test/ui/proc-macro/attribute.rs
New upstream version 1.67.1+dfsg1
[rustc.git] / src / test / ui / proc-macro / attribute.rs
CommitLineData
a1dfa0c6
XL
1// force-host
2// no-prefer-dynamic
3
c30ab7b3 4#![crate_type = "proc-macro"]
c30ab7b3
SL
5
6extern crate proc_macro;
9fa01778 7use proc_macro::*;
c30ab7b3 8
dc9dc135 9#[proc_macro_derive] //~ ERROR malformed `proc_macro_derive` attribute
9fa01778
XL
10pub fn foo1(input: TokenStream) -> TokenStream { input }
11
dc9dc135 12#[proc_macro_derive = ""] //~ ERROR malformed `proc_macro_derive` attribute
9fa01778
XL
13pub fn foo2(input: TokenStream) -> TokenStream { input }
14
15#[proc_macro_derive(d3, a, b)]
dc9dc135 16//~^ ERROR attribute must have either one or two arguments
9fa01778
XL
17pub fn foo3(input: TokenStream) -> TokenStream { input }
18
19#[proc_macro_derive(d4, attributes(a), b)]
dc9dc135 20//~^ ERROR attribute must have either one or two arguments
9fa01778
XL
21pub fn foo4(input: TokenStream) -> TokenStream { input }
22
23#[proc_macro_derive("a")]
24//~^ ERROR: not a meta item
25pub fn foo5(input: TokenStream) -> TokenStream { input }
c30ab7b3 26
9fa01778 27#[proc_macro_derive(d6 = "")]
c30ab7b3 28//~^ ERROR: must only be one word
9fa01778 29pub fn foo6(input: TokenStream) -> TokenStream { input }
476ff2be 30
9fa01778 31#[proc_macro_derive(m::d7)]
476ff2be 32//~^ ERROR: must only be one word
9fa01778 33pub fn foo7(input: TokenStream) -> TokenStream { input }
476ff2be 34
9fa01778 35#[proc_macro_derive(d8(a))]
476ff2be 36//~^ ERROR: must only be one word
9fa01778 37pub fn foo8(input: TokenStream) -> TokenStream { input }
476ff2be 38
9fa01778
XL
39#[proc_macro_derive(self)]
40//~^ ERROR: `self` cannot be a name of derive macro
41pub fn foo9(input: TokenStream) -> TokenStream { input }
42
416331ca 43#[proc_macro_derive(PartialEq)] // OK
9fa01778
XL
44pub fn foo10(input: TokenStream) -> TokenStream { input }
45
46#[proc_macro_derive(d11, a)]
47//~^ ERROR: second argument must be `attributes`
48//~| ERROR: attribute must be of form: `attributes(foo, bar)`
49pub fn foo11(input: TokenStream) -> TokenStream { input }
50
51#[proc_macro_derive(d12, attributes)]
52//~^ ERROR: attribute must be of form: `attributes(foo, bar)`
53pub fn foo12(input: TokenStream) -> TokenStream { input }
54
55#[proc_macro_derive(d13, attributes("a"))]
56//~^ ERROR: not a meta item
57pub fn foo13(input: TokenStream) -> TokenStream { input }
58
59#[proc_macro_derive(d14, attributes(a = ""))]
60//~^ ERROR: must only be one word
61pub fn foo14(input: TokenStream) -> TokenStream { input }
62
63#[proc_macro_derive(d15, attributes(m::a))]
64//~^ ERROR: must only be one word
65pub fn foo15(input: TokenStream) -> TokenStream { input }
66
67#[proc_macro_derive(d16, attributes(a(b)))]
68//~^ ERROR: must only be one word
69pub fn foo16(input: TokenStream) -> TokenStream { input }
70
71#[proc_macro_derive(d17, attributes(self))]
72//~^ ERROR: `self` cannot be a name of derive helper attribute
73pub fn foo17(input: TokenStream) -> TokenStream { input }