| /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ |
| /* { dg-do compile } */ |
| |
| /* Test that protocol qualifiers are maintained correctly when a |
| @class is replaced by its @interface. */ |
| |
| #include <objc/objc.h> |
| |
| @protocol MyProtocol |
| - (void) method; |
| @end |
| |
| @class MyClass; |
| |
| static MyClass <MyProtocol> *object1; |
| static MyClass *object2; |
| |
| /* Declarating the @interface now will need to update all the existing |
| ObjC types referring to MyClass with the new information. We need |
| to test that protocol information is not lost in the process. */ |
| @interface MyClass |
| @end |
| |
| void test1 (void) |
| { |
| [object1 method]; /* Ok */ |
| [object2 method]; /* { dg-warning ".MyClass. may not respond to ..method." } */ |
| |
| /* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept '\.\.\.' as arguments" "" { target *-*-* } 0 } */ |
| } |