30 lines
1.2 KiB
Mathematica
30 lines
1.2 KiB
Mathematica
|
// 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}}
|
||
|
}
|
||
|
}
|