1 | // Without PCH |
2 | // RUN: %clang_cc1 -fsyntax-only -verify -include %s -include %s %s |
3 | |
4 | // With PCH |
5 | // RUN: %clang_cc1 -fsyntax-only -verify %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 NSObject |
15 | - (id)init; |
16 | - (void)finalize; |
17 | @end |
18 | |
19 | @interface NSObject (Properties) |
20 | @property (readonly,nonatomic) int intProp; |
21 | @end |
22 | |
23 | //===----------------------------------------------------------------------===// |
24 | #elif !defined(HEADER2) |
25 | #define HEADER2 |
26 | #if !defined(HEADER1) |
27 | #error Header inclusion order messed up |
28 | #endif |
29 | |
30 | //===----------------------------------------------------------------------===// |
31 | // Dependent header |
32 | |
33 | @interface MyClass : NSObject |
34 | +(void)meth; |
35 | @end |
36 | |
37 | @interface NSObject(ObjExt) |
38 | -(void)extMeth; |
39 | @end |
40 | |
41 | @interface NSObject () |
42 | @property (readwrite,nonatomic) int intProp; |
43 | @end |
44 | |
45 | @class NSObject; |
46 | |
47 | //===----------------------------------------------------------------------===// |
48 | #else |
49 | //===----------------------------------------------------------------------===// |
50 | |
51 | @implementation MyClass |
52 | +(void)meth {} |
53 | -(void)finalize { |
54 | [super finalize]; |
55 | } |
56 | @end |
57 | |
58 | void test(NSObject *o) { |
59 | [o extMeth]; |
60 | |
61 | // Make sure the property is treated as read-write. |
62 | o.intProp = 17; |
63 | } |
64 | |
65 | //===----------------------------------------------------------------------===// |
66 | #endif |
67 | |