[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / Coverage / objc-language-features.inc
blob29d8298c82e62831007b2a9632702bceddd1208c
1 //-*- ObjC -*-
3 @protocol P0;
5 @protocol P1 
6 -(void) fm0;
7 @end
9 @class B;
11 @interface Root
12 @property(readonly) int p0;
13 @end
15 @interface A : Root <P1> {
16   int iv0;
17   B *iv1;
18   B<P1> *iv2;
21 @property(readonly) int p0;
22 @property(assign,nonatomic,readwrite) int p1;
23 @property(copy) id p2;
24 @property(retain) id p3;
25 @property(assign, getter=getme, setter=setme:) id p4;
26 @property(assign, readwrite) id p5;
27 @end
29 @implementation A
30 @dynamic p0;
31 @synthesize p1 = iv0;
33 // Property type can differ from ivar type.
34 @synthesize p5 = iv2;
36 +(void) fm0 {
37   [super fm0];
39 -(void) im0 {
40   const char *s0 = __func__;
41   const char *s1 = __FUNCTION__;
42   const char *s2 = __PRETTY_FUNCTION__;
43   [super im0];
44   int x = super.p0;
46 -(void) im1: (int) x, ... {
48 @end
50 @implementation C : A
51 @end
53 @interface A (Cat)
54 @end
56 @implementation A (Cat)
57 @end
59 @interface B
60 @end
62 int f0(id x) {
63   @synchronized(x) {
64   }
66   @try {
67     @throw x;
69   } @catch(A *e) {
70     @throw;
72     // @catch param doesn't require name.
73   } @catch(B *) {
75   } @finally {
76     ;
77   }
79   for (id y in x) {
80     break;
81   }
84 #ifndef __OBJC2__
85 struct s0 {
86   @defs(A);
88 #endif