Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / SemaObjC / property-and-class-extension.m
blob80cedc372dd2ab6191f235c8cb18e3ff81b2bd94
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 /**
4 When processing @synthesize, treat ivars in a class extension the same as ivars in the class @interface, 
5 and treat ivars in a superclass extension the same as ivars in the superclass @interface.
6 In particular, when searching for an ivar to back an @synthesize, do look at ivars in the class's own class 
7 extension but ignore any ivars in superclass class extensions.
8 */
10 @interface Super {
11         int ISA;
13 @end
15 @interface Super() {
16   int Property;         // expected-note {{previously declared 'Property' here}}
18 @end
20 @interface SomeClass : Super {
21         int interfaceIvar1;
22         int interfaceIvar2;
24 @property int Property;
25 @property int Property1;
26 @end
28 @interface SomeClass () {
29   int Property1;
31 @end
33 @implementation SomeClass 
34 @synthesize Property;   // expected-error {{property 'Property' attempting to use instance variable 'Property' declared in super class 'Super'}}
35 @synthesize Property1;  // OK
36 @end