xref: /minix3/external/bsd/llvm/dist/clang/test/Preprocessor/stringize_misc.c (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
2*f4a2713aSLionel Sambuc 
3*f4a2713aSLionel Sambuc #define M(x, y) #x #y
4*f4a2713aSLionel Sambuc 
5*f4a2713aSLionel Sambuc M( f(1, 2), g((x=y++, y)))
6*f4a2713aSLionel Sambuc // CHECK: "f(1, 2)" "g((x=y++, y))"
7*f4a2713aSLionel Sambuc 
8*f4a2713aSLionel Sambuc M( {a=1 , b=2;} ) /* A semicolon is not a comma */
9*f4a2713aSLionel Sambuc // CHECK: "{a=1" "b=2;}"
10*f4a2713aSLionel Sambuc 
11*f4a2713aSLionel Sambuc M( <, [ ) /* Passes the arguments < and [ */
12*f4a2713aSLionel Sambuc // CHECK: "<" "["
13*f4a2713aSLionel Sambuc 
14*f4a2713aSLionel Sambuc M( (,), (...) ) /* Passes the arguments (,) and (...) */
15*f4a2713aSLionel Sambuc // CHECK: "(,)" "(...)"
16*f4a2713aSLionel Sambuc 
17*f4a2713aSLionel Sambuc #define START_END(start, end) start c=3; end
18*f4a2713aSLionel Sambuc 
19*f4a2713aSLionel Sambuc START_END( {a=1 , b=2;} ) /* braces are not parentheses */
20*f4a2713aSLionel Sambuc // CHECK: {a=1 c=3; b=2;}
21*f4a2713aSLionel Sambuc 
22*f4a2713aSLionel Sambuc /*
23*f4a2713aSLionel Sambuc  * To pass a comma token as an argument it is
24*f4a2713aSLionel Sambuc  * necessary to write:
25*f4a2713aSLionel Sambuc  */
26*f4a2713aSLionel Sambuc #define COMMA ,
27*f4a2713aSLionel Sambuc 
28*f4a2713aSLionel Sambuc M(a COMMA b, (a, b))
29*f4a2713aSLionel Sambuc // CHECK: "a COMMA b" "(a, b)"
30*f4a2713aSLionel Sambuc 
31