Home | History | Annotate | Download | only in Preprocessor
      1 // RUN: %clang_cc1 -P -E -fms-extensions %s | FileCheck -strict-whitespace %s
      2 
      3 // This horrible stuff should preprocess into (other than whitespace):
      4 //   int foo;
      5 //   int bar;
      6 //   int baz;
      7 
      8 int foo;
      9 
     10 // CHECK: int foo;
     11 
     12 #define comment /##/  dead tokens live here
     13 comment This is stupidity
     14 
     15 int bar;
     16 
     17 // CHECK: int bar;
     18 
     19 #define nested(x) int x comment cute little dead tokens...
     20 
     21 nested(baz)  rise of the dead tokens
     22 
     23 ;
     24 
     25 // CHECK: int baz
     26 // CHECK: ;
     27 
     28 
     29 // rdar://8197149 - VC++ allows invalid token pastes: (##baz
     30 #define foo(x) abc(x)
     31 #define bar(y) foo(##baz(y))
     32 bar(q)
     33 
     34 // CHECK: abc(baz(q))
     35