xref: /aosp_15_r20/external/clang/test/Misc/diag-macro-backtrace.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: not %clang -fsyntax-only -fmacro-backtrace-limit=0 %s 2>&1 | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li #define FOO 1+"hi"
4*67e74705SXin Li #define BAR FOO
5*67e74705SXin Li #define BAZ BAR
6*67e74705SXin Li #define QUZ BAZ
7*67e74705SXin Li #define TAZ QUZ
8*67e74705SXin Li #define ABA TAZ
9*67e74705SXin Li #define BAB ABA
10*67e74705SXin Li #define ZAZ BAB
11*67e74705SXin Li #define WAZ ZAZ
12*67e74705SXin Li #define DROOL WAZ
13*67e74705SXin Li #define FOOL DROOL
14*67e74705SXin Li 
15*67e74705SXin Li FOOL;
16*67e74705SXin Li 
17*67e74705SXin Li // CHECK: :15:1: error: expected identifier or '('
18*67e74705SXin Li // CHECK: FOOL
19*67e74705SXin Li // CHECK: ^
20*67e74705SXin Li // CHECK: :13:14: note: expanded from macro 'FOOL'
21*67e74705SXin Li // CHECK: #define FOOL DROOL
22*67e74705SXin Li // CHECK:              ^
23*67e74705SXin Li // CHECK: :12:15: note: expanded from macro 'DROOL'
24*67e74705SXin Li // CHECK: #define DROOL WAZ
25*67e74705SXin Li // CHECK:               ^
26*67e74705SXin Li // CHECK: :11:13: note: expanded from macro 'WAZ'
27*67e74705SXin Li // CHECK: #define WAZ ZAZ
28*67e74705SXin Li // CHECK:             ^
29*67e74705SXin Li // CHECK: :10:13: note: expanded from macro 'ZAZ'
30*67e74705SXin Li // CHECK: #define ZAZ BAB
31*67e74705SXin Li // CHECK:             ^
32*67e74705SXin Li // CHECK: :9:13: note: expanded from macro 'BAB'
33*67e74705SXin Li // CHECK: #define BAB ABA
34*67e74705SXin Li // CHECK:             ^
35*67e74705SXin Li // CHECK: :8:13: note: expanded from macro 'ABA'
36*67e74705SXin Li // CHECK: #define ABA TAZ
37*67e74705SXin Li // CHECK:             ^
38*67e74705SXin Li // CHECK: :7:13: note: expanded from macro 'TAZ'
39*67e74705SXin Li // CHECK: #define TAZ QUZ
40*67e74705SXin Li // CHECK:             ^
41*67e74705SXin Li // CHECK: :6:13: note: expanded from macro 'QUZ'
42*67e74705SXin Li // CHECK: #define QUZ BAZ
43*67e74705SXin Li // CHECK:             ^
44*67e74705SXin Li // CHECK: :5:13: note: expanded from macro 'BAZ'
45*67e74705SXin Li // CHECK: #define BAZ BAR
46*67e74705SXin Li // CHECK:             ^
47*67e74705SXin Li // CHECK: :4:13: note: expanded from macro 'BAR'
48*67e74705SXin Li // CHECK: #define BAR FOO
49*67e74705SXin Li // CHECK:             ^
50*67e74705SXin Li // CHECK: :3:13: note: expanded from macro 'FOO'
51*67e74705SXin Li // CHECK: #define FOO 1+"hi"
52*67e74705SXin Li // CHECK:             ^
53*67e74705SXin Li 
54*67e74705SXin Li #define ADD(a, b) a ## #b
55*67e74705SXin Li ADD(L, foo)
56*67e74705SXin Li // CHECK:    error: expected identifier or '('
57*67e74705SXin Li // CHECK:    ADD(L, foo)
58*67e74705SXin Li // CHECK: {{^\^}}
59*67e74705SXin Li // CHECK:    note: expanded from macro 'ADD'
60*67e74705SXin Li // CHECK:    #define ADD(a, b) a ## #b
61*67e74705SXin Li // CHECK: {{^                  \^}}
62*67e74705SXin Li // CHECK:    note: expanded from here
63*67e74705SXin Li // CHECK:    L"foo"
64*67e74705SXin Li // CHECK: {{^\^}}
65*67e74705SXin Li 
66*67e74705SXin Li // CHECK: 2 errors generated.
67