1/* Test assignments and comparisons involving category protocols.  */
2/* Author: Nicola Pero <nicola@brainstorm.co.uk>.  */
3/* { dg-do compile } */
4
5#include <objc/objc.h>
6
7@protocol MyProtocol
8- (void) method;
9@end
10
11@interface MyClass
12@end
13
14@interface MyClass (Addition) <MyProtocol>
15- (void) method;
16@end
17
18@interface MyOtherClass : MyClass
19@end
20
21int main()
22{
23  id <MyProtocol> obj_p = nil;
24  MyClass *obj_cp = nil;
25  MyOtherClass *obj_cp2 = nil;
26
27  obj_cp = obj_p;  /* { dg-warning "distinct Objective\\-C type" } */
28  obj_cp2 = obj_p; /* { dg-warning "distinct Objective\\-C type" } */
29  obj_p = obj_cp;  /* Ok */
30  obj_p = obj_cp2; /* Ok */
31
32  if (obj_cp == obj_p) ; /* Ok */
33  if (obj_cp2 == obj_p) ; /* Ok */
34  if (obj_p == obj_cp) ; /* Ok */
35  if (obj_p == obj_cp2) ; /* Ok */
36
37  return 0;
38}
39