35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| // 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}}
 | |
| }
 |