1// RUN: %clang_cc1 -funknown-anytype -fsyntax-only -fdebugger-support -verify %s 2 3extern __unknown_anytype test0; 4extern __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 16void 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