1 | // Without PCH |
2 | // RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin10 -fobjc-arc %s -include %s -include %s |
3 | |
4 | // With PCH |
5 | // RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin10 -fobjc-arc %s -chain-include %s -chain-include %s |
6 | |
7 | // expected-no-diagnostics |
8 | |
9 | #ifndef HEADER1 |
10 | #define HEADER1 |
11 | //===----------------------------------------------------------------------===// |
12 | // Primary header |
13 | |
14 | @interface I |
15 | +(void)meth; |
16 | @end |
17 | |
18 | //===----------------------------------------------------------------------===// |
19 | #elif !defined(HEADER2) |
20 | #define HEADER2 |
21 | #if !defined(HEADER1) |
22 | #error Header inclusion order messed up |
23 | #endif |
24 | |
25 | //===----------------------------------------------------------------------===// |
26 | // Dependent header |
27 | |
28 | @interface I() |
29 | @property (assign) id prop; |
30 | +(void)meth2; |
31 | @end |
32 | |
33 | //===----------------------------------------------------------------------===// |
34 | #else |
35 | //===----------------------------------------------------------------------===// |
36 | |
37 | void foo(I *i) { |
38 | [I meth]; |
39 | [I meth2]; |
40 | i.prop = 0; |
41 | } |
42 | |
43 | //===----------------------------------------------------------------------===// |
44 | #endif |
45 | |