]>
Commit | Line | Data |
---|---|---|
a1dfa0c6 XL |
1 | // force-host |
2 | // no-prefer-dynamic | |
3 | ||
c30ab7b3 | 4 | #![crate_type = "proc-macro"] |
c30ab7b3 SL |
5 | |
6 | extern crate proc_macro; | |
9fa01778 | 7 | use proc_macro::*; |
c30ab7b3 | 8 | |
dc9dc135 | 9 | #[proc_macro_derive] //~ ERROR malformed `proc_macro_derive` attribute |
9fa01778 XL |
10 | pub fn foo1(input: TokenStream) -> TokenStream { input } |
11 | ||
dc9dc135 | 12 | #[proc_macro_derive = ""] //~ ERROR malformed `proc_macro_derive` attribute |
9fa01778 XL |
13 | pub 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 |
17 | pub 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 |
21 | pub fn foo4(input: TokenStream) -> TokenStream { input } |
22 | ||
23 | #[proc_macro_derive("a")] | |
24 | //~^ ERROR: not a meta item | |
25 | pub fn foo5(input: TokenStream) -> TokenStream { input } | |
c30ab7b3 | 26 | |
9fa01778 | 27 | #[proc_macro_derive(d6 = "")] |
c30ab7b3 | 28 | //~^ ERROR: must only be one word |
9fa01778 | 29 | pub fn foo6(input: TokenStream) -> TokenStream { input } |
476ff2be | 30 | |
9fa01778 | 31 | #[proc_macro_derive(m::d7)] |
476ff2be | 32 | //~^ ERROR: must only be one word |
9fa01778 | 33 | pub fn foo7(input: TokenStream) -> TokenStream { input } |
476ff2be | 34 | |
9fa01778 | 35 | #[proc_macro_derive(d8(a))] |
476ff2be | 36 | //~^ ERROR: must only be one word |
9fa01778 | 37 | pub 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 | |
41 | pub fn foo9(input: TokenStream) -> TokenStream { input } | |
42 | ||
416331ca | 43 | #[proc_macro_derive(PartialEq)] // OK |
9fa01778 XL |
44 | pub 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)` | |
49 | pub fn foo11(input: TokenStream) -> TokenStream { input } | |
50 | ||
51 | #[proc_macro_derive(d12, attributes)] | |
52 | //~^ ERROR: attribute must be of form: `attributes(foo, bar)` | |
53 | pub fn foo12(input: TokenStream) -> TokenStream { input } | |
54 | ||
55 | #[proc_macro_derive(d13, attributes("a"))] | |
56 | //~^ ERROR: not a meta item | |
57 | pub fn foo13(input: TokenStream) -> TokenStream { input } | |
58 | ||
59 | #[proc_macro_derive(d14, attributes(a = ""))] | |
60 | //~^ ERROR: must only be one word | |
61 | pub fn foo14(input: TokenStream) -> TokenStream { input } | |
62 | ||
63 | #[proc_macro_derive(d15, attributes(m::a))] | |
64 | //~^ ERROR: must only be one word | |
65 | pub fn foo15(input: TokenStream) -> TokenStream { input } | |
66 | ||
67 | #[proc_macro_derive(d16, attributes(a(b)))] | |
68 | //~^ ERROR: must only be one word | |
69 | pub 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 | |
73 | pub fn foo17(input: TokenStream) -> TokenStream { input } |