Clang Project

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