xref: /llvm-project/clang/test/Preprocessor/dump_macros.c (revision 8fbe78f6fc7b41d1a4228c126fcb522131150518)
1*8fbe78f6SDaniel Dunbar // RUN: %clang_cc1 -E -dM %s -o - | FileCheck %s -strict-whitespace
21630c3c4SChris Lattner 
301c73e1bSChris Lattner // Space at end even without expansion tokens
4a8ad0a90SDaniel Dunbar // CHECK: #define A(x)
51630c3c4SChris Lattner #define A(x)
61630c3c4SChris Lattner 
71630c3c4SChris Lattner // Space before expansion list.
8a8ad0a90SDaniel Dunbar // CHECK: #define B(x,y) x y
91630c3c4SChris Lattner #define B(x,y)x y
101630c3c4SChris Lattner 
1101c73e1bSChris Lattner // No space in argument list.
1201c73e1bSChris Lattner // CHECK: #define C(x,y) x y
131630c3c4SChris Lattner #define C(x, y) x y
141630c3c4SChris Lattner 
151630c3c4SChris Lattner // No paste avoidance.
165a6fb511SChris Lattner // CHECK: #define D() ..
175a6fb511SChris Lattner #define D() ..
181630c3c4SChris Lattner 
191630c3c4SChris Lattner // Simple test.
205a6fb511SChris Lattner // CHECK: #define E .
215a6fb511SChris Lattner // CHECK: #define F X()Y
225a6fb511SChris Lattner #define E .
235a6fb511SChris Lattner #define F X()Y
241630c3c4SChris Lattner 
251630c3c4SChris Lattner // gcc prints macros at end of translation unit, so last one wins.
265a6fb511SChris Lattner // CHECK: #define G 2
275a6fb511SChris Lattner #define G 1
285a6fb511SChris Lattner #undef G
295a6fb511SChris Lattner #define G 2
309dfed9fdSChris Lattner 
319dfed9fdSChris Lattner // Variadic macros of various sorts. PR5699
329dfed9fdSChris Lattner 
339dfed9fdSChris Lattner // CHECK: H(x,...) __VA_ARGS__
349dfed9fdSChris Lattner #define H(x, ...) __VA_ARGS__
359dfed9fdSChris Lattner // CHECK: I(...) __VA_ARGS__
369dfed9fdSChris Lattner #define I(...) __VA_ARGS__
379dfed9fdSChris Lattner // CHECK: J(x...) __VA_ARGS__
389dfed9fdSChris Lattner #define J(x ...) __VA_ARGS__
39