| // RUN: %clang_cc1 -funknown-anytype -fsyntax-only -fdebugger-support -verify %s |
| |
| extern __unknown_anytype test0; |
| extern __unknown_anytype test1(); |
| |
| @interface A |
| - (int*)getIntPtr; |
| - (double*)getSomePtr; |
| @end |
| |
| @interface B |
| - (float*)getFloatPtr; |
| - (short*)getSomePtr; |
| @end |
| |
| void test_unknown_anytype_receiver() { |
| int *ip = [test0 getIntPtr]; |
| float *fp = [test1() getFloatPtr]; |
| double *dp = [test1() getSomePtr]; // okay: picks first method found |
| [[test0 unknownMethod] otherUnknownMethod]; // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}} |
| (void)(int)[[test0 unknownMethod] otherUnknownMethod];; |
| [[test1() unknownMethod] otherUnknownMethod]; // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}} |
| (void)(id)[[test1() unknownMethod] otherUnknownMethod]; |
| |
| if ([[test0 unknownMethod] otherUnknownMethod]) { // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}} |
| } |
| if ([[test1() unknownMethod] otherUnknownMethod]) { // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}} |
| } |
| } |