1 | // RUN: %clang_cc1 %s -Eonly -verify -Wno-all -pedantic -std=c++2a
|
2 |
|
3 | //expected-error@+1{{missing '('}}
|
4 | #define V1(...) __VA_OPT__
|
5 | #undef V1
|
6 | // OK
|
7 | #define V1(...) __VA_OPT__ ()
|
8 | #undef V1
|
9 |
|
10 | //expected-warning@+1{{can only appear in the expansion of a variadic macro}}
|
11 | #define V2() __VA_OPT__(x)
|
12 | #undef V2
|
13 |
|
14 | //expected-error@+2{{missing ')' after}}
|
15 | //expected-note@+1{{to match this '('}}
|
16 | #define V3(...) __VA_OPT__(
|
17 | #undef V3
|
18 |
|
19 | #define V4(...) __VA_OPT__(__VA_ARGS__)
|
20 | #undef V4
|
21 |
|
22 | //expected-error@+1{{nested}}
|
23 | #define V5(...) __VA_OPT__(__VA_OPT__())
|
24 | #undef V5
|
25 |
|
26 | //expected-error@+1{{not followed by}}
|
27 | #define V1(...) __VA_OPT__ (#)
|
28 | #undef V1
|
29 |
|
30 | //expected-error@+1{{cannot appear at start}}
|
31 | #define V1(...) __VA_OPT__ (##)
|
32 | #undef V1
|
33 |
|
34 | //expected-error@+1{{cannot appear at start}}
|
35 | #define V1(...) __VA_OPT__ (## X) x
|
36 | #undef V1
|
37 |
|
38 | //expected-error@+1{{cannot appear at end}}
|
39 | #define V1(...) y __VA_OPT__ (X ##)
|
40 | #undef V1
|
41 |
|
42 |
|
43 | #define FOO(x,...) # __VA_OPT__(x) #x #__VA_OPT__(__VA_ARGS__) //OK
|
44 |
|
45 | //expected-error@+1{{not followed by a macro parameter}}
|
46 | #define V1(...) __VA_OPT__(#)
|
47 | #undef V1
|
48 |
|
49 | //expected-error@+1{{cannot appear at start}}
|
50 | #define V1(...) a __VA_OPT__(##) b
|
51 | #undef V1
|
52 |
|
53 | //expected-error@+1{{cannot appear at start}}
|
54 | #define V1(...) a __VA_OPT__(a ## b) b __VA_OPT__(##)
|
55 | #undef V1
|
56 |
|
57 | #define V1(x,...) # __VA_OPT__(b x) // OK
|
58 | #undef V1
|
59 |
|
60 | //expected-error@+2{{missing ')' after}}
|
61 | //expected-note@+1{{to match this '('}}
|
62 | #define V1(...) __VA_OPT__ ((())
|
63 | #undef V1
|
64 |
|
65 | |