1 // RUN: %clang_cc1 -E -dM %s -o - | FileCheck %s -strict-whitespace
2 
3 // Space at end even without expansion tokens
4 // CHECK: #define A(x)
5 #define A(x)
6 
7 // Space before expansion list.
8 // CHECK: #define B(x,y) x y
9 #define B(x,y)x y
10 
11 // No space in argument list.
12 // CHECK: #define C(x,y) x y
13 #define C(x, y) x y
14 
15 // No paste avoidance.
16 // CHECK: #define D() ..
17 #define D() ..
18 
19 // Simple test.
20 // CHECK: #define E .
21 // CHECK: #define F X()Y
22 #define E .
23 #define F X()Y
24 
25 // gcc prints macros at end of translation unit, so last one wins.
26 // CHECK: #define G 2
27 #define G 1
28 #undef G
29 #define G 2
30 
31 // Variadic macros of various sorts. PR5699
32 
33 // CHECK: H(x,...) __VA_ARGS__
34 #define H(x, ...) __VA_ARGS__
35 // CHECK: I(...) __VA_ARGS__
36 #define I(...) __VA_ARGS__
37 // CHECK: J(x...) __VA_ARGS__
38 #define J(x ...) __VA_ARGS__
39