43 lines
		
	
	
		
			1014 B
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1014 B
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
 | |
| 
 | |
| @interface SomeClass  @end
 | |
| 
 | |
| int fn1(SomeClass *obj) {
 | |
|         obj->privateIvar = 1; // expected-error {{'SomeClass' does not have a member named 'privateIvar}}
 | |
|         return obj->publicIvar;     // expected-error {{'SomeClass' does not have a member named 'publicIvar'}}
 | |
| }
 | |
| 
 | |
| @interface SomeClass () {
 | |
| // @private by default
 | |
|         int privateIvar;
 | |
| @public
 | |
|         int publicIvar;
 | |
| }
 | |
| @end
 | |
| 
 | |
| int fn2(SomeClass *obj) {
 | |
| 	obj->publicIvar = 1;
 | |
|         return obj->publicIvar    // ok
 | |
|              + obj->privateIvar;  // expected-error {{instance variable 'privateIvar' is private}}
 | |
| }
 | |
| 
 | |
| @implementation SomeClass
 | |
| 
 | |
| int fn3(SomeClass *obj) {
 | |
| 	obj->privateIvar = 2;
 | |
|         return obj->publicIvar    // ok
 | |
|              + obj->privateIvar;  // ok
 | |
|     }
 | |
| @end
 | |
| 
 | |
| @interface SomeClass (Category)
 | |
|     {	
 | |
|         int categoryIvar; // expected-error {{instance variables may not be placed in categories}}
 | |
|     }
 | |
| @end
 | |
| 
 | |
| @interface SomeClass (Category1)
 | |
|     {	
 | |
|     }
 | |
| @end
 |