59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s
 | |
| 
 | |
| @interface B
 | |
| +(int) classGetter;
 | |
| -(int) getter;
 | |
| @end
 | |
| 
 | |
| @interface A : B
 | |
| @end
 | |
| 
 | |
| @implementation A
 | |
| +(int) classGetter {
 | |
|   return 0;
 | |
| }
 | |
| 
 | |
| +(int) classGetter2 {
 | |
|   return super.classGetter;
 | |
| }
 | |
| 
 | |
| -(void) method {
 | |
|   int x = super.getter;
 | |
| }
 | |
| @end
 | |
| 
 | |
| void f0() {
 | |
|   // FIXME: not implemented yet.
 | |
|   //int l1 = A.classGetter;
 | |
|   int l2 = [A classGetter2];
 | |
| }
 | |
| 
 | |
| // rdar://13349296
 | |
| __attribute__((objc_root_class)) @interface ClassBase 
 | |
| @property (nonatomic, retain) ClassBase * foo; // expected-note {{property declared here}}
 | |
| @end
 | |
| 
 | |
| @implementation ClassBase 
 | |
| - (void) Meth:(ClassBase*)foo {
 | |
|   super.foo = foo; // expected-error {{'ClassBase' cannot use 'super' because it is a root class}}
 | |
|   [super setFoo:foo]; // expected-error {{'ClassBase' cannot use 'super' because it is a root class}}
 | |
| }
 | |
| @end
 | |
| 
 | |
| @interface ClassDerived : ClassBase 
 | |
| @property (nonatomic, retain) ClassDerived * foo; // expected-warning {{auto property synthesis will not synthesize property 'foo'; it will be implemented by its superclass}}
 | |
| @end
 | |
| 
 | |
| @implementation ClassDerived // expected-note {{detected while default synthesizing properties in class implementation}}
 | |
| - (void) Meth:(ClassBase*)foo {
 | |
|   super.foo = foo; // must work with no warning
 | |
|   [super setFoo:foo]; // works with no warning
 | |
| }
 | |
| @end
 | |
| 
 | |
| @implementation IFaceNotFound (Foo) // expected-error {{cannot find interface declaration for 'IFaceNotFound'}}
 | |
| -(int) foo {
 | |
|   return super.foo; // expected-error {{expected identifier or '('}}
 | |
| }
 | |
| @end
 |