// RUN: not %clang -cc1 -fsyntax-only %s 2>&1 | FileCheck %s #define a b #define b c #define c(x) d(x) #define d(x) x*1 #define e f #define f g #define g(x) h(x) #define h(x) x void PR16799() { const char str[] = "string"; a(str); // CHECK: :15:3: error: invalid operands to binary expression // CHECK: ('const char *' and 'int') // CHECK: a(str); // CHECK: ^~~~~~ // CHECK: :3:11: note: expanded from macro 'a' // CHECK: #define a b // CHECK: ^ // CHECK: :4:11: note: expanded from macro 'b' // CHECK: #define b c // CHECK: ^ // CHECK: :5:14: note: expanded from macro 'c' // CHECK: #define c(x) d(x) // CHECK: ^~~~ // CHECK: :6:15: note: expanded from macro 'd' // CHECK: #define d(x) x*1 // CHECK: ~^~ e(str); // CHECK: :33:5: warning: expression result unused // CHECK: e(str); // CHECK: ^~~ // CHECK: :8:11: note: expanded from macro 'e' // CHECK: #define e f // CHECK: ^ // CHECK: :9:11: note: expanded from macro 'f' // CHECK: #define f g // CHECK: ^ // CHECK: :10:16: note: expanded from macro 'g' // CHECK: #define g(x) h(x) // CHECK: ^ // CHECK: :11:14: note: expanded from macro 'h' // CHECK: #define h(x) x // CHECK: ^ } // CHECK: 1 warning and 1 error generated.