150
|
1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
|
|
2
|
|
3 @interface MySuperClass
|
|
4 {
|
|
5 @private
|
|
6 int private;
|
|
7
|
|
8 @protected
|
|
9 int protected;
|
|
10
|
|
11 @public
|
|
12 int public;
|
|
13 }
|
|
14 @end
|
|
15
|
|
16 @implementation MySuperClass
|
|
17 - (void) test {
|
|
18 int access;
|
|
19 MySuperClass *s = 0;
|
|
20 access = s->private;
|
|
21 access = s->protected;
|
|
22 }
|
|
23 @end
|
|
24
|
|
25
|
|
26 @interface MyClass : MySuperClass
|
|
27 @end
|
|
28
|
|
29 @implementation MyClass
|
|
30 - (void) test {
|
|
31 int access;
|
|
32 MySuperClass *s = 0;
|
|
33 access = s->private; // expected-error {{instance variable 'private' is private}}
|
|
34 access = s->protected;
|
|
35 MyClass *m=0;
|
|
36 access = m->private; // expected-error {{instance variable 'private' is private}}
|
|
37 access = m->protected;
|
|
38 }
|
|
39 @end
|
|
40
|
|
41
|
|
42 @interface Deeper : MyClass
|
|
43 @end
|
|
44
|
|
45 @implementation Deeper
|
|
46 - (void) test {
|
|
47 int access;
|
|
48 MySuperClass *s = 0;
|
|
49 access = s->private; // expected-error {{instance variable 'private' is private}}
|
|
50 access = s->protected;
|
|
51 MyClass *m=0;
|
|
52 access = m->private; // expected-error {{instance variable 'private' is private}}
|
|
53 access = m->protected;
|
|
54 }
|
|
55 @end
|
|
56
|
|
57 @interface Unrelated
|
|
58 @end
|
|
59
|
|
60 @implementation Unrelated
|
|
61 - (void) test {
|
|
62 int access;
|
|
63 MySuperClass *s = 0;
|
|
64 access = s->private; // expected-error {{instance variable 'private' is private}}
|
|
65 access = s->protected; // expected-error {{instance variable 'protected' is protected}}
|
|
66 MyClass *m=0;
|
|
67 access = m->private; // expected-error {{instance variable 'private' is private}}
|
|
68 access = m->protected; // expected-error {{instance variable 'protected' is protected}}
|
|
69 }
|
|
70 @end
|
|
71
|
|
72 int main (void)
|
|
73 {
|
|
74 MySuperClass *s = 0;
|
|
75 int access;
|
|
76 access = s->private; // expected-error {{instance variable 'private' is private}}
|
|
77 access = s->protected; // expected-error {{instance variable 'protected' is protected}}
|
|
78 return 0;
|
|
79 }
|
|
80
|
|
81 typedef signed char BOOL;
|
|
82 typedef unsigned int NSUInteger;
|
|
83 typedef struct _NSZone NSZone;
|
|
84 @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
|
|
85 @protocol NSObject - (BOOL)isEqual:(id)object;
|
|
86 @end
|
|
87 @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
|
|
88 @end
|
|
89 @interface NSObject <NSObject> {}
|
|
90 @end
|
|
91 extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
|
|
92 @interface NSResponder : NSObject <NSCoding> {}
|
|
93 @end
|
|
94 @protocol NSAnimatablePropertyContainer
|
|
95 - (id)animator;
|
|
96 @end
|
|
97 extern NSString *NSAnimationTriggerOrderIn ;
|
|
98 @interface NSView : NSResponder <NSAnimatablePropertyContainer> {
|
|
99 struct __VFlags2 {
|
|
100 }
|
|
101 _vFlags2;
|
|
102 }
|
|
103 @end
|
|
104 @class NSFontDescriptor, NSAffineTransform, NSGraphicsContext;
|
|
105 @interface NSScrollView : NSView {}
|
|
106 @end
|
|
107
|
|
108 @class CasperMixerView;
|
|
109 @interface CasperDiffScrollView : NSScrollView {
|
|
110 @private
|
|
111 CasperMixerView *_comparatorView;
|
|
112 NSView *someField;
|
|
113 }
|
|
114 @end
|
|
115
|
|
116 @implementation CasperDiffScrollView
|
|
117 + (void)initialize {}
|
|
118 static void _CasperDiffScrollViewInstallMixerView(CasperDiffScrollView *scrollView) {
|
|
119 if (scrollView->someField != ((void *)0)) {
|
|
120 }
|
|
121 }
|
|
122 @end
|