// 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 |