1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
3 @class FOO, BAR; // expected-note {{forward declaration of class here}}
6 @interface INTF : FOO // expected-error {{attempting to use the forward class 'FOO' as superclass of 'INTF'}}
14 @interface INTF1 : FOO
17 @interface INTF2 : INTF1 // expected-note {{previous definition is here}}
23 @interface INTF2 : INTF1 // expected-error {{duplicate interface definition for class 'INTF2'}}
26 // 2nd test of a forward class declaration matching a typedef name
27 // referring to class object.
28 // FIXME. This may become a negative test should we decide to make this an error.
30 @interface NSObject @end
32 @protocol XCElementP @end
34 typedef NSObject <XCElementP> XCElement; // expected-note {{previous definition is here}}
36 @interface XCElementMainImp {
37 XCElement * _editingElement;
41 @class XCElement; // expected-warning {{redefinition of forward class 'XCElement' of a typedef name of an object type is ignored}}
43 @implementation XCElementMainImp
44 - (XCElement *)editingElement { return _editingElement; }
48 @class B; // expected-note {{forward declaration of class here}}
49 @interface A : B {} // expected-error {{attempting to use the forward class 'B' as superclass of 'A'}}
55 @implementation A @end
56 @implementation B @end