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