xref: /llvm-project/clang/test/SemaObjC/class-def-test-1.m (revision bf678e82e12dff0d5c9c0187fc75443a913fc2eb)
181e4e4e5SEli Friedman// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
289026888SChris Lattner
3*bf678e82SFariborz Jahanian@protocol SUPER; // expected-note {{protocol 'SUPER' has no definition}}
489026888SChris Lattner
59c1842b6SChris Lattner@interface SUPER <SUPER> @end // expected-warning {{cannot find protocol definition for 'SUPER'}}
689026888SChris Lattner
70369c57aSChris Lattnertypedef int INTF; //  expected-note {{previous definition is here}}
889026888SChris Lattner
989026888SChris Lattner@interface INTF @end // expected-error {{redefinition of 'INTF' as different kind of symbol}}
1089026888SChris Lattner
110369c57aSChris Lattner@interface OBJECT @end	// expected-note {{previous definition is here}}
1289026888SChris Lattner
13e6447ef9SChris Lattner@interface INTF1 : OBJECT @end // expected-note {{previous definition is here}}
1489026888SChris Lattner
15e6447ef9SChris Lattner@interface INTF1 : OBJECT @end // expected-error {{duplicate interface definition for class 'INTF1'}}
1689026888SChris Lattner
1775a45ba2SDouglas Gregortypedef int OBJECT; // expected-error {{redefinition of 'OBJECT' as different kind of symbol}}
1889026888SChris Lattner
1981e4e4e5SEli Friedmantypedef int OBJECT2; // expected-note 2 {{previous definition is here}}
2075a45ba2SDouglas Gregor@interface INTF2 : OBJECT2 @end // expected-error {{redefinition of 'OBJECT2' as different kind of symbol}}
2189026888SChris Lattner
2281e4e4e5SEli Friedman@implementation INTF2 : OBJECT2 @end // expected-error {{redefinition of 'OBJECT2' as different kind of symbol}}
2389026888SChris Lattner
2489026888SChris Lattner@protocol PROTO;
2589026888SChris Lattner
2689026888SChris Lattner@interface INTF3 : PROTO @end // expected-error {{cannot find interface declaration for 'PROTO', superclass of 'INTF3'}}
2789026888SChris Lattner
28189d41f6SSteve Naroff// Make sure we allow the following (for GCC compatibility).
29189d41f6SSteve Naroff@interface NSObject @end
30189d41f6SSteve Narofftypedef NSObject TD_NSObject;
31189d41f6SSteve Naroff@interface XCElementUnit : TD_NSObject {}
32189d41f6SSteve Naroff@end
33189d41f6SSteve Naroff
3411bb3084SDouglas Gregor// Make sure we don't typo-correct to ourselves.
3511bb3084SDouglas Gregor@interface SomeClassSub : SomeClassSup // expected-error{{cannot find interface declaration for 'SomeClassSup', superclass of 'SomeClassSub'}}
3611bb3084SDouglas Gregor@end
37