Home | History | Annotate | Download | only in Misc
      1 // RUN: not %clang -cc1 -fsyntax-only %s 2>&1 | FileCheck %s
      2 
      3 #define a b
      4 #define b c
      5 #define c(x) d(x)
      6 #define d(x) x*1
      7 
      8 #define e f
      9 #define f g
     10 #define g(x) h(x)
     11 #define h(x) x
     12 
     13 void PR16799() {
     14   const char str[] = "string";
     15   a(str);
     16   // CHECK: :15:3: error: invalid operands to binary expression
     17   // CHECK:       ('const char *' and 'int')
     18   // CHECK:   a(str);
     19   // CHECK:   ^~~~~~
     20   // CHECK: :3:11: note: expanded from macro 'a'
     21   // CHECK: #define a b
     22   // CHECK:           ^
     23   // CHECK: :4:11: note: expanded from macro 'b'
     24   // CHECK: #define b c
     25   // CHECK:           ^
     26   // CHECK: :5:14: note: expanded from macro 'c'
     27   // CHECK: #define c(x) d(x)
     28   // CHECK:              ^~~~
     29   // CHECK: :6:15: note: expanded from macro 'd'
     30   // CHECK: #define d(x) x*1
     31   // CHECK:              ~^~
     32 
     33   e(str);
     34   // CHECK: :33:5: warning: expression result unused
     35   // CHECK:   e(str);
     36   // CHECK:     ^~~
     37   // CHECK: :8:11: note: expanded from macro 'e'
     38   // CHECK: #define e f
     39   // CHECK:           ^
     40   // CHECK: :9:11: note: expanded from macro 'f'
     41   // CHECK: #define f g
     42   // CHECK:           ^
     43   // CHECK: :10:16: note: expanded from macro 'g'
     44   // CHECK: #define g(x) h(x)
     45   // CHECK:                ^
     46   // CHECK: :11:14: note: expanded from macro 'h'
     47   // CHECK: #define h(x) x
     48   // CHECK:              ^
     49 }
     50 // CHECK: 1 warning and 1 error generated.
     51