1 | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s |
2 | |
3 | @class SUPER, Y; // expected-note 2 {{forward declaration of class here}} |
4 | |
5 | @interface INTF :SUPER // expected-error {{attempting to use the forward class 'SUPER' as superclass of 'INTF'}} |
6 | @end |
7 | |
8 | @interface SUPER @end |
9 | |
10 | @interface INTF1 : SUPER // expected-note {{previous definition is here}} |
11 | @end |
12 | |
13 | @interface INTF2 : INTF1 |
14 | @end |
15 | |
16 | @interface INTF3 : Y // expected-error {{attempting to use the forward class 'Y' as superclass of 'INTF3'}} \ |
17 | // expected-note{{'INTF3' declared here}} |
18 | @end |
19 | |
20 | @interface INTF1 // expected-error {{duplicate interface definition for class 'INTF1'}} |
21 | @end |
22 | |
23 | @implementation SUPER |
24 | - (void)dealloc { |
25 | [super dealloc]; // expected-error {{'SUPER' cannot use 'super' because it is a root class}} |
26 | } |
27 | @end |
28 | |
29 | @interface RecursiveClass : RecursiveClass // expected-error {{trying to recursively use 'RecursiveClass' as superclass of 'RecursiveClass'}} |
30 | @end |
31 | |
32 | @implementation RecursiveClass |
33 | @end |
34 | |
35 | @implementation iNTF3 // expected-warning{{cannot find interface declaration for 'iNTF3'; did you mean 'INTF3'?}} |
36 | @end |
37 | |