Home | History | Annotate | Download | only in Preprocessor
      1 // RUN: %clang_cc1 -E -std=c++11 %s -o - | FileCheck -strict-whitespace %s
      2 
      3 
      4 #define y(a) ..a
      5 A: y(.)
      6 // This should print as ".. ." to avoid turning into ...
      7 // CHECK: A: .. .
      8 
      9 #define X 0 .. 1
     10 B: X
     11 // CHECK: B: 0 .. 1
     12 
     13 #define DOT .
     14 C: ..DOT
     15 // CHECK: C: .. .
     16 
     17 
     18 #define PLUS +
     19 #define EMPTY
     20 #define f(x) =x=
     21 D: +PLUS -EMPTY- PLUS+ f(=)
     22 // CHECK: D: + + - - + + = = =
     23 
     24 
     25 #define test(x) L#x
     26 E: test(str)
     27 // Should expand to L "str" not L"str"
     28 // CHECK: E: L "str"
     29 
     30 // Should avoid producing >>=.
     31 #define equal =
     32 F: >>equal
     33 // CHECK: F: >> =
     34 
     35 // Make sure we don't introduce spaces in the guid because we try to avoid
     36 // pasting '-' to a numeric constant.
     37 #define TYPEDEF(guid)   typedef [uuid(guid)]
     38 TYPEDEF(66504301-BE0F-101A-8BBB-00AA00300CAB) long OLE_COLOR;
     39 // CHECK: typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB)] long OLE_COLOR;
     40 
     41 // Be careful with UD-suffixes.
     42 #define StrSuffix() "abc"_suffix
     43 #define IntSuffix() 123_suffix
     44 UD: StrSuffix()ident
     45 UD: IntSuffix()ident
     46 // CHECK: UD: "abc"_suffix ident
     47 // CHECK: UD: 123_suffix ident
     48