1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li__attribute ((unavailable)) 4*67e74705SXin Li@protocol FwProto; // expected-note{{marked unavailable}} 5*67e74705SXin Li 6*67e74705SXin LiClass <FwProto> cFw = 0; // expected-error {{'FwProto' is unavailable}} 7*67e74705SXin Li 8*67e74705SXin Li 9*67e74705SXin Li__attribute ((deprecated)) @protocol MyProto1 // expected-note 7 {{'MyProto1' has been explicitly marked deprecated here}} 10*67e74705SXin Li@end 11*67e74705SXin Li 12*67e74705SXin Li@protocol Proto2 <MyProto1> // expected-warning {{'MyProto1' is deprecated}} 13*67e74705SXin Li+method2; 14*67e74705SXin Li@end 15*67e74705SXin Li 16*67e74705SXin Li 17*67e74705SXin Li@interface MyClass1 <MyProto1> // expected-warning {{'MyProto1' is deprecated}} 18*67e74705SXin Li{ 19*67e74705SXin Li Class isa; 20*67e74705SXin Li} 21*67e74705SXin Li@end 22*67e74705SXin Li 23*67e74705SXin Li@interface Derived : MyClass1 <MyProto1> // expected-warning {{'MyProto1' is deprecated}} 24*67e74705SXin Li{ 25*67e74705SXin Li id <MyProto1> ivar; // expected-warning {{'MyProto1' is deprecated}} 26*67e74705SXin Li} 27*67e74705SXin Li@end 28*67e74705SXin Li 29*67e74705SXin Li@interface MyClass1 (Category) <MyProto1, Proto2> // expected-warning {{'MyProto1' is deprecated}} 30*67e74705SXin Li@end 31*67e74705SXin Li 32*67e74705SXin Li 33*67e74705SXin Li 34*67e74705SXin LiClass <MyProto1> clsP1 = 0; // expected-warning {{'MyProto1' is deprecated}} 35*67e74705SXin Li 36*67e74705SXin Li@protocol FwProto @end // expected-note{{marked unavailable}} 37*67e74705SXin Li 38*67e74705SXin Li@interface MyClass2 <FwProto> // expected-error {{'FwProto' is unavailable}} 39*67e74705SXin Li@end 40*67e74705SXin Li 41*67e74705SXin Li__attribute ((unavailable)) __attribute ((deprecated)) @protocol XProto; // expected-note{{marked unavailable}} 42*67e74705SXin Li 43*67e74705SXin Liid <XProto> idX = 0; // expected-error {{'XProto' is unavailable}} 44*67e74705SXin Li 45*67e74705SXin Liint main () 46*67e74705SXin Li{ 47*67e74705SXin Li MyClass1 <MyProto1> *p1; // expected-warning {{'MyProto1' is deprecated}} 48*67e74705SXin Li} 49*67e74705SXin Li 50