50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s
 | |
| 
 | |
| __attribute ((unavailable))
 | |
| @protocol FwProto; // expected-note{{marked unavailable}}
 | |
| 
 | |
| Class <FwProto> cFw = 0;  // expected-error {{'FwProto' is unavailable}}
 | |
| 
 | |
| 
 | |
| __attribute ((deprecated)) @protocol MyProto1 // expected-note 7 {{'MyProto1' has been explicitly marked deprecated here}}
 | |
| @end
 | |
| 
 | |
| @protocol Proto2  <MyProto1>  // expected-warning {{'MyProto1' is deprecated}}
 | |
| +method2;
 | |
| @end
 | |
| 
 | |
| 
 | |
| @interface MyClass1 <MyProto1>  // expected-warning {{'MyProto1' is deprecated}}
 | |
| {
 | |
|   Class isa;
 | |
| }
 | |
| @end
 | |
| 
 | |
| @interface Derived : MyClass1 <MyProto1>  // expected-warning {{'MyProto1' is deprecated}}
 | |
| {
 | |
| 	id <MyProto1> ivar;  // expected-warning {{'MyProto1' is deprecated}}
 | |
| }
 | |
| @end
 | |
| 
 | |
| @interface MyClass1 (Category) <MyProto1, Proto2>  // expected-warning {{'MyProto1' is deprecated}}
 | |
| @end
 | |
| 
 | |
| 
 | |
| 
 | |
| Class <MyProto1> clsP1 = 0;  // expected-warning {{'MyProto1' is deprecated}}
 | |
| 
 | |
| @protocol FwProto @end // expected-note{{marked unavailable}}
 | |
| 
 | |
| @interface MyClass2 <FwProto> // expected-error {{'FwProto' is unavailable}}
 | |
| @end
 | |
| 
 | |
| __attribute ((unavailable)) __attribute ((deprecated)) @protocol XProto; // expected-note{{marked unavailable}}
 | |
| 
 | |
| id <XProto> idX = 0; // expected-error {{'XProto' is unavailable}}
 | |
| 
 | |
| int main ()
 | |
| {
 | |
| 	MyClass1 <MyProto1> *p1;  // expected-warning {{'MyProto1' is deprecated}}
 | |
| }
 | |
| 
 |