[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / SemaObjC / unknown-anytype.m
blob62ee4cf6a8df801e0cfe53c201eccc8e09d2c271
1 // RUN: %clang_cc1 -funknown-anytype -fsyntax-only -fdebugger-support -verify %s
3 extern __unknown_anytype test0;
4 extern __unknown_anytype test1(void);
6 @interface A
7 - (int*)getIntPtr;
8 - (double*)getSomePtr;
9 @end
11 @interface B
12 - (float*)getFloatPtr;
13 - (short*)getSomePtr;
14 @end
16 void test_unknown_anytype_receiver(void) {
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];
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   }