brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 624bab0 Raw
95 lines · plain
1// RUN: %clang_cc1 -pedantic -fsyntax-only -verify %s2 3@protocol MyProto1 4@end5 6@protocol MyProto2 7@end8 9@interface INTF @end10 11id<MyProto1> Func(INTF <MyProto1, MyProto2> *p2) // expected-note 2{{passing argument to parameter 'p2' here}}12{13	return p2;14}15 16 17 18 19 id<MyProto1> Gunc(id <MyProto1, MyProto2>p2)20{21	return p2;22}23 24 25 id<MyProto1> Gunc1(id <MyProto1, MyProto2>p2)26{27	return p2;28}29 30id<MyProto1, MyProto2> Gunc2(id <MyProto1>p2)31{32	Func(p2);	// expected-warning {{passing 'id<MyProto1>' to parameter of incompatible type 'INTF<MyProto1,MyProto2> *'}}33	return p2;	// expected-warning {{returning 'id<MyProto1>' from a function with incompatible result type 'id<MyProto1,MyProto2>'}}34}35 36 37 38id<MyProto1> Gunc3(id <MyProto2>p2)39{40	return p2;	 // expected-warning {{returning 'id<MyProto2>' from a function with incompatible result type 'id<MyProto1>'}}41}42 43 44id<MyProto1, MyProto2> Gunc4(id <MyProto2, MyProto1>p2)45{46	return p2;47}48 49 50 51INTF<MyProto1> * Hunc(id <MyProto1, MyProto2>p2)52{53	return p2;54}55 56 57INTF<MyProto1> * Hunc1(id <MyProto1, MyProto2>p2)58{59	return p2;60}61 62INTF<MyProto1, MyProto2> * Hunc2(id <MyProto1>p2)63{64	Func(p2);	// expected-warning {{passing 'id<MyProto1>' to parameter of incompatible type 'INTF<MyProto1,MyProto2> *'}}65	return p2;	// expected-warning {{returning 'id<MyProto1>' from a function with incompatible result type 'INTF<MyProto1,MyProto2> *'}}66}67 68INTF<MyProto1> * Hunc3(id <MyProto2>p2)69{70	return p2;	 // expected-warning {{returning 'id<MyProto2>' from a function with incompatible result type 'INTF<MyProto1> *'}}71}72 73 74INTF<MyProto1, MyProto2> * Hunc4(id <MyProto2, MyProto1>p2)75{76	return p2;77}78 79id Iunc(id <MyProto1, MyProto2>p2)80{81	return p2;82}83 84 85id<MyProto1> Iunc1(id p2)86{87	return p2;88}89 90id<MyProto1, MyProto2> Iunc2(id p2)91{92	Iunc(p2);	93	return p2;94}95