| // 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-warning {{@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-warning {{@protocol is using a forward protocol declaration of TestProtocol}} |
| } |
| |
| int doesConformSuper(id foo) { |
| return [foo conformsToProtocol:@protocol(SuperProtocol)]; // expected-warning {{@protocol is using a forward protocol declaration of SuperProtocol}} |
| } |