37 lines
		
	
	
		
			962 B
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			962 B
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
// RUN: %clang_cc1 -fsyntax-only -verify %s
 | 
						|
 | 
						|
/**
 | 
						|
When processing @synthesize, treat ivars in a class extension the same as ivars in the class @interface, 
 | 
						|
and treat ivars in a superclass extension the same as ivars in the superclass @interface.
 | 
						|
In particular, when searching for an ivar to back an @synthesize, do look at ivars in the class's own class 
 | 
						|
extension but ignore any ivars in superclass class extensions.
 | 
						|
*/
 | 
						|
 | 
						|
@interface Super {
 | 
						|
  	int ISA;
 | 
						|
}
 | 
						|
@end
 | 
						|
 | 
						|
@interface Super() {
 | 
						|
  int Property;		// expected-note {{previously declared 'Property' here}}
 | 
						|
}
 | 
						|
@end
 | 
						|
 | 
						|
@interface SomeClass : Super {
 | 
						|
        int interfaceIvar1;
 | 
						|
        int interfaceIvar2;
 | 
						|
}
 | 
						|
@property int Property;
 | 
						|
@property int Property1;
 | 
						|
@end
 | 
						|
 | 
						|
@interface SomeClass () {
 | 
						|
  int Property1;
 | 
						|
}
 | 
						|
@end
 | 
						|
 | 
						|
@implementation SomeClass 
 | 
						|
@synthesize Property;	// expected-error {{property 'Property' attempting to use instance variable 'Property' declared in super class 'Super'}}
 | 
						|
@synthesize Property1;	// OK
 | 
						|
@end
 |