Clang Project

clang_source_code/test/Misc/reduced-diags-macros-backtrace.cpp
1// RUN: not %clang_cc1 -fsyntax-only -fmacro-backtrace-limit 0 %s 2>&1 | FileCheck %s --check-prefix=ALL
2// RUN: not %clang_cc1 -fsyntax-only -fmacro-backtrace-limit 2 %s 2>&1 | FileCheck %s --check-prefix=SKIP
3
4#define F(x) x + 1
5#define G(x) F(x) + 2
6#define ADD(x,y) G(x) + y
7#define LEVEL4(x) ADD(p,x)
8#define LEVEL3(x) LEVEL4(x)
9#define LEVEL2(x) LEVEL3(x)
10#define LEVEL1(x) LEVEL2(x)
11
12int a = LEVEL1(b);
13
14// ALL: {{.*}}:12:9: error: use of undeclared identifier 'p'
15// ALL-NEXT: int a = LEVEL1(b);
16// ALL-NEXT:         ^
17// ALL-NEXT: {{.*}}:10:19: note: expanded from macro 'LEVEL1'
18// ALL-NEXT: #define LEVEL1(x) LEVEL2(x)
19// ALL-NEXT:                   ^
20// ALL-NEXT: {{.*}}:9:19: note: expanded from macro 'LEVEL2'
21// ALL-NEXT: #define LEVEL2(x) LEVEL3(x)
22// ALL-NEXT:                   ^
23// ALL-NEXT: {{.*}}:8:19: note: expanded from macro 'LEVEL3'
24// ALL-NEXT: #define LEVEL3(x) LEVEL4(x)
25// ALL-NEXT:                   ^
26// ALL-NEXT: {{.*}}:7:23: note: expanded from macro 'LEVEL4'
27// ALL-NEXT: #define LEVEL4(x) ADD(p,x)
28// ALL-NEXT:                       ^
29// ALL-NEXT: {{.*}}:12:16: error: use of undeclared identifier 'b'
30// ALL-NEXT: int a = LEVEL1(b);
31// ALL-NEXT:                ^
32// ALL-NEXT: 2 errors generated.
33
34// SKIP: {{.*}}:12:9: error: use of undeclared identifier 'p'
35// SKIP-NEXT: int a = LEVEL1(b);
36// SKIP-NEXT:         ^
37// SKIP-NEXT: {{.*}}:10:19: note: expanded from macro 'LEVEL1'
38// SKIP-NEXT: #define LEVEL1(x) LEVEL2(x)
39// SKIP-NEXT:                   ^
40// SKIP-NEXT: note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
41// SKIP-NEXT: {{.*}}:7:23: note: expanded from macro 'LEVEL4'
42// SKIP-NEXT: #define LEVEL4(x) ADD(p,x)
43// SKIP-NEXT:                       ^
44// SKIP-NEXT: {{.*}}:12:16: error: use of undeclared identifier 'b'
45// SKIP-NEXT: int a = LEVEL1(b);
46// SKIP-NEXT:                ^
47// SKIP-NEXT: 2 errors generated.
48