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