1 | // RUN: %clang_cc1 -fsyntax-only -fdebugger-support -verify -Wno-objc-root-class %s |
2 | // RUN: %clang_cc1 -x objective-c++ -fdebugger-support -fsyntax-only -verify -Wno-objc-root-class %s |
3 | // expected-no-diagnostics |
4 | // rdar://10997647 |
5 | |
6 | @interface I |
7 | { |
8 | @private |
9 | int ivar; |
10 | } |
11 | @end |
12 | |
13 | @implementation I |
14 | - (int) meth { |
15 | return self->ivar; |
16 | } |
17 | int foo1(I* p) { |
18 | return p->ivar; |
19 | } |
20 | @end |
21 | |
22 | int foo(I* p) { |
23 | return p->ivar; |
24 | } |
25 | |
26 | @interface B |
27 | @end |
28 | |
29 | @implementation B |
30 | - (int) meth : (I*) arg { |
31 | return arg->ivar; |
32 | } |
33 | @end |
34 | |
35 | |
36 | @interface I1 { |
37 | int protected_ivar; |
38 | } |
39 | @property int PROP_INMAIN; |
40 | @end |
41 | |
42 | @interface I1() { |
43 | int private_ivar; |
44 | } |
45 | @property int PROP_INCLASSEXT; |
46 | @end |
47 | |
48 | @implementation I1 |
49 | @synthesize PROP_INMAIN, PROP_INCLASSEXT; |
50 | |
51 | - (int) Meth { |
52 | PROP_INMAIN = 1; |
53 | PROP_INCLASSEXT = 2; |
54 | protected_ivar = 1; // OK |
55 | return private_ivar; // OK |
56 | } |
57 | @end |
58 | |
59 | |
60 | @interface DER : I1 |
61 | @end |
62 | |
63 | @implementation DER |
64 | - (int) Meth { |
65 | protected_ivar = 1; // OK |
66 | PROP_INMAIN = 1; |
67 | PROP_INCLASSEXT = 2; |
68 | return private_ivar; |
69 | } |
70 | @end |
71 | |
72 | |