blob: 8fcf037450b2088d4ad8ea788416baf5f2be313f [file] [log] [blame]
Chris Lattner9944f782009-12-07 01:49:36 +00001// RUN: clang-cc -E -dM %s -o - | FileCheck %s -strict-whitespace
Chris Lattnerf73903a2009-02-06 06:45:26 +00002
Chris Lattner9944f782009-12-07 01:49:36 +00003// Space at end even without expansion tokens
4// CHECK: {{#define A[(]x[)] $}}
Chris Lattnerf73903a2009-02-06 06:45:26 +00005#define A(x)
6
7// Space before expansion list.
Chris Lattner9944f782009-12-07 01:49:36 +00008// CHECK: {{#define B[(]x,y[)] x y$}}
Chris Lattnerf73903a2009-02-06 06:45:26 +00009#define B(x,y)x y
10
Chris Lattner9944f782009-12-07 01:49:36 +000011// No space in argument list.
12// CHECK: #define C(x,y) x y
Chris Lattnerf73903a2009-02-06 06:45:26 +000013#define C(x, y) x y
14
15// No paste avoidance.
Chris Lattner9944f782009-12-07 01:49:36 +000016// CHECK: #define X() ..
Chris Lattnerf73903a2009-02-06 06:45:26 +000017#define X() ..
18
19// Simple test.
Chris Lattner9944f782009-12-07 01:49:36 +000020// CHECK: #define Y .
21// CHECK: #define Z X()Y
Chris Lattnerf73903a2009-02-06 06:45:26 +000022#define Y .
23#define Z X()Y
24
25// gcc prints macros at end of translation unit, so last one wins.
Chris Lattner9944f782009-12-07 01:49:36 +000026// CHECK: #define foo 2
Chris Lattnerf73903a2009-02-06 06:45:26 +000027#define foo 1
28#undef foo
29#define foo 2
30