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