]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/SemaObjC/ivar-access-tests.m
Vendor import of clang trunk r130700:
[FreeBSD/FreeBSD.git] / test / SemaObjC / ivar-access-tests.m
1 // RUN: %clang_cc1 -fsyntax-only -verify %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