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