// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s @interface MySuperClass { @private int private; @protected int protected; @public int public; } @end @implementation MySuperClass - (void) test { int access; MySuperClass *s = 0; access = s->private; access = s->protected; } @end @interface MyClass : MySuperClass @end @implementation MyClass - (void) test { int access; MySuperClass *s = 0; access = s->private; // expected-error {{instance variable 'private' is private}} access = s->protected; MyClass *m=0; access = m->private; // expected-error {{instance variable 'private' is private}} access = m->protected; } @end @interface Deeper : MyClass @end @implementation Deeper - (void) test { int access; MySuperClass *s = 0; access = s->private; // expected-error {{instance variable 'private' is private}} access = s->protected; MyClass *m=0; access = m->private; // expected-error {{instance variable 'private' is private}} access = m->protected; } @end @interface Unrelated @end @implementation Unrelated - (void) test { int access; MySuperClass *s = 0; access = s->private; // expected-error {{instance variable 'private' is private}} access = s->protected; // expected-error {{instance variable 'protected' is protected}} MyClass *m=0; access = m->private; // expected-error {{instance variable 'private' is private}} access = m->protected; // expected-error {{instance variable 'protected' is protected}} } @end int main (void) { MySuperClass *s = 0; int access; access = s->private; // expected-error {{instance variable 'private' is private}} access = s->protected; // expected-error {{instance variable 'protected' is protected}} return 0; } typedef signed char BOOL; typedef unsigned int NSUInteger; typedef struct _NSZone NSZone; @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; @protocol NSObject - (BOOL)isEqual:(id)object; @end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end @interface NSObject <NSObject> {} @end extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone); @interface NSResponder : NSObject <NSCoding> {} @end @protocol NSAnimatablePropertyContainer - (id)animator; @end extern NSString *NSAnimationTriggerOrderIn ; @interface NSView : NSResponder <NSAnimatablePropertyContainer> { struct __VFlags2 { } _vFlags2; } @end @class NSFontDescriptor, NSAffineTransform, NSGraphicsContext; @interface NSScrollView : NSView {} @end @class CasperMixerView; @interface CasperDiffScrollView : NSScrollView { @private CasperMixerView *_comparatorView; NSView *someField; } @end @implementation CasperDiffScrollView + (void)initialize {} static void _CasperDiffScrollViewInstallMixerView(CasperDiffScrollView *scrollView) { if (scrollView->someField != ((void *)0)) { } } @end