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