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