// 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}} } }