1 | // RUN: %clang_cc1 -funknown-anytype -fsyntax-only -fdebugger-support -verify %s |
2 | |
3 | extern __unknown_anytype test0; |
4 | extern __unknown_anytype test1(); |
5 | |
6 | @interface A |
7 | - (int*)getIntPtr; |
8 | - (double*)getSomePtr; |
9 | @end |
10 | |
11 | @interface B |
12 | - (float*)getFloatPtr; |
13 | - (short*)getSomePtr; |
14 | @end |
15 | |
16 | void test_unknown_anytype_receiver() { |
17 | int *ip = [test0 getIntPtr]; |
18 | float *fp = [test1() getFloatPtr]; |
19 | double *dp = [test1() getSomePtr]; // okay: picks first method found |
20 | [[test0 unknownMethod] otherUnknownMethod]; // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}} |
21 | (void)(int)[[test0 unknownMethod] otherUnknownMethod];; |
22 | [[test1() unknownMethod] otherUnknownMethod]; // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}} |
23 | (void)(id)[[test1() unknownMethod] otherUnknownMethod]; |
24 | |
25 | if ([[test0 unknownMethod] otherUnknownMethod]) { // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}} |
26 | } |
27 | if ([[test1() unknownMethod] otherUnknownMethod]) { // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}} |
28 | } |
29 | } |
30 | |