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
 |