1 | #ifndef HEADER |
2 | #define HEADER |
3 | |
4 | #include "blahblah.h" |
5 | void erroneous(int); |
6 | void erroneous(float); |
7 | |
8 | struct bar; |
9 | struct zed { |
10 | bar g; |
11 | }; |
12 | struct baz { |
13 | zed h; |
14 | }; |
15 | |
16 | void errparm(zed e); |
17 | |
18 | struct S { |
19 | { |
20 | ; |
21 | |
22 | #else |
23 | |
24 | void foo(void) { |
25 | erroneous(0); |
26 | } |
27 | |
28 | #endif |
29 | |
30 | // RUN: c-index-test -write-pch %t.h.pch %s -Xclang -detailed-preprocessing-record |
31 | // RUN: c-index-test -test-load-source local %s -include %t.h -Xclang -detailed-preprocessing-record | FileCheck -check-prefix=CHECK-PARSE %s |
32 | // RUN: c-index-test -index-file %s -include %t.h -Xclang -detailed-preprocessing-record | FileCheck -check-prefix=CHECK-INDEX %s |
33 | |
34 | // CHECK-PARSE: pch-with-errors.c:{{.*}}:6: FunctionDecl=foo |
35 | // CHECK-PARSE: pch-with-errors.c:{{.*}}:3: CallExpr=erroneous |
36 | |
37 | // CHECK-INDEX: [indexDeclaration]: kind: function | name: foo |
38 | // CHECK-INDEX: [indexEntityReference]: kind: function | name: erroneous |
39 | |
40 | // RUN: not %clang -fsyntax-only %s -include %t.h 2>&1 | FileCheck -check-prefix=PCH-ERR %s |
41 | // PCH-ERR: error: PCH file contains compiler errors |
42 | |
43 | // RUN: not c-index-test -write-pch %t.pch foobar.c 2>&1 | FileCheck -check-prefix=NONEXISTENT %s |
44 | // NONEXISTENT: Unable to load translation unit |
45 | |