123 lines
2.9 KiB
Objective-C
123 lines
2.9 KiB
Objective-C
// 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
|