blob: 38e058c513f6a0a46f7b444cef48a6936cafb2d4 [file] [log] [blame]
Douglas Gregorf1d1ca52011-12-01 01:37:36 +00001// 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
Sean Callanan50a9a122012-02-04 01:29:37 +000020 [[test0 unknownMethod] otherUnknownMethod]; // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}}
Douglas Gregorf1d1ca52011-12-01 01:37:36 +000021 (void)(int)[[test0 unknownMethod] otherUnknownMethod];;
Sean Callanan50a9a122012-02-04 01:29:37 +000022 [[test1() unknownMethod] otherUnknownMethod]; // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}}
Douglas Gregorf1d1ca52011-12-01 01:37:36 +000023 (void)(id)[[test1() unknownMethod] otherUnknownMethod];
Douglas Gregor5e3a8be2011-12-15 00:53:32 +000024
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 }
Douglas Gregorf1d1ca52011-12-01 01:37:36 +000029}