| /* Test assignments and comparisons involving category protocols. */ |
| /* Author: Nicola Pero <nicola@brainstorm.co.uk>. */ |
| /* { dg-do compile } */ |
| // { dg-additional-options "-Wno-objc-root-class" } |
| |
| #include <objc/objc.h> |
| |
| @protocol MyProtocol |
| - (void) method; |
| @end |
| |
| @interface MyClass |
| @end |
| |
| @interface MyClass (Addition) <MyProtocol> |
| - (void) method; |
| @end |
| |
| @interface MyOtherClass : MyClass |
| @end |
| |
| int main() |
| { |
| id <MyProtocol> obj_p = nil; |
| MyClass *obj_cp = nil; |
| MyOtherClass *obj_cp2 = nil; |
| |
| obj_cp = obj_p; /* { dg-warning "distinct Objective\\-C type" } */ |
| obj_cp2 = obj_p; /* { dg-warning "distinct Objective\\-C type" } */ |
| obj_p = obj_cp; /* Ok */ |
| obj_p = obj_cp2; /* Ok */ |
| |
| if (obj_cp == obj_p) ; /* Ok */ |
| if (obj_cp2 == obj_p) ; /* Ok */ |
| if (obj_p == obj_cp) ; /* Ok */ |
| if (obj_p == obj_cp2) ; /* Ok */ |
| |
| return 0; |
| } |