Home | History | Annotate | Download | only in SemaObjC
      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