1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 3 @interface B 4 +(int) classGetter; 5 -(int) getter; 6 @end 7 8 @interface A : B 9 @end 10 11 @implementation A 12 +(int) classGetter { 13 return 0; 14 } 15 16 +(int) classGetter2 { 17 return super.classGetter; 18 } 19 20 -(void) method { 21 int x = super.getter; 22 } 23 @end 24 25 void f0() { 26 // FIXME: not implemented yet. 27 //int l1 = A.classGetter; 28 int l2 = [A classGetter2]; 29 } 30 31 // rdar://13349296 32 __attribute__((objc_root_class)) @interface ClassBase 33 @property (nonatomic, retain) ClassBase * foo; // expected-note {{property declared here}} 34 @end 35 36 @implementation ClassBase 37 - (void) Meth:(ClassBase*)foo { 38 super.foo = foo; // expected-error {{'ClassBase' cannot use 'super' because it is a root class}} 39 [super setFoo:foo]; // expected-error {{'ClassBase' cannot use 'super' because it is a root class}} 40 } 41 @end 42 43 @interface ClassDerived : ClassBase 44 @property (nonatomic, retain) ClassDerived * foo; // expected-warning {{auto property synthesis will not synthesize property 'foo'; it will be implemented by its superclass}} 45 @end 46 47 @implementation ClassDerived // expected-note {{detected while default synthesizing properties in class implementation}} 48 - (void) Meth:(ClassBase*)foo { 49 super.foo = foo; // must work with no warning 50 [super setFoo:foo]; // works with no warning 51 } 52 @end 53 54 @implementation IFaceNotFound (Foo) // expected-error {{cannot find interface declaration for 'IFaceNotFound'}} 55 -(int) foo { 56 return super.foo; // expected-error {{expected identifier or '('}} 57 } 58 @end 59