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 123