xref: /aosp_15_r20/external/clang/test/Misc/diag-macro-backtrace2.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
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 Li void 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