1// RUN: %clang_cc1 -fsyntax-only -verify %s 2 3@class Protocol; 4 5@protocol fproto; // expected-note {{'fproto' declared here}} 6 7@protocol p1 8@end 9 10@class cl; 11 12int main() 13{ 14 Protocol *proto = @protocol(p1); 15 Protocol *fproto = @protocol(fproto); // expected-error {{@protocol is using a forward protocol declaration of 'fproto'}} 16 Protocol *pp = @protocol(i); // expected-error {{cannot find protocol declaration for 'i'}} 17 Protocol *p1p = @protocol(cl); // expected-error {{cannot find protocol declaration for 'cl'}} 18} 19 20// rdar://17768630 21@protocol SuperProtocol; // expected-note {{'SuperProtocol' declared here}} 22@protocol TestProtocol; // expected-note {{'TestProtocol' declared here}} 23 24@interface I 25- (int) conformsToProtocol : (Protocol *)protocl; 26@end 27 28int doesConform(id foo) { 29 return [foo conformsToProtocol:@protocol(TestProtocol)]; // expected-error {{@protocol is using a forward protocol declaration of 'TestProtocol'}} 30} 31 32int doesConformSuper(id foo) { 33 return [foo conformsToProtocol:@protocol(SuperProtocol)]; // expected-error {{@protocol is using a forward protocol declaration of 'SuperProtocol'}} 34} 35