You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.1 KiB
35 lines
1.1 KiB
// 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}}
|
|
}
|