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