xref: /aosp_15_r20/external/clang/test/Coverage/objc-language-features.inc (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li//-*- ObjC -*-
2*67e74705SXin Li
3*67e74705SXin Li@protocol P0;
4*67e74705SXin Li
5*67e74705SXin Li@protocol P1
6*67e74705SXin Li-(void) fm0;
7*67e74705SXin Li@end
8*67e74705SXin Li
9*67e74705SXin Li@class B;
10*67e74705SXin Li
11*67e74705SXin Li@interface Root
12*67e74705SXin Li@property(readonly) int p0;
13*67e74705SXin Li@end
14*67e74705SXin Li
15*67e74705SXin Li@interface A : Root <P1> {
16*67e74705SXin Li  int iv0;
17*67e74705SXin Li  B *iv1;
18*67e74705SXin Li  B<P1> *iv2;
19*67e74705SXin Li}
20*67e74705SXin Li
21*67e74705SXin Li@property(readonly) int p0;
22*67e74705SXin Li@property(assign,nonatomic,readwrite) int p1;
23*67e74705SXin Li@property(copy) id p2;
24*67e74705SXin Li@property(retain) id p3;
25*67e74705SXin Li@property(assign, getter=getme, setter=setme:) id p4;
26*67e74705SXin Li@property(assign, readwrite) id p5;
27*67e74705SXin Li@end
28*67e74705SXin Li
29*67e74705SXin Li@implementation A
30*67e74705SXin Li@dynamic p0;
31*67e74705SXin Li@synthesize p1 = iv0;
32*67e74705SXin Li
33*67e74705SXin Li// Property type can differ from ivar type.
34*67e74705SXin Li@synthesize p5 = iv2;
35*67e74705SXin Li
36*67e74705SXin Li+(void) fm0 {
37*67e74705SXin Li  [super fm0];
38*67e74705SXin Li}
39*67e74705SXin Li-(void) im0 {
40*67e74705SXin Li  const char *s0 = __func__;
41*67e74705SXin Li  const char *s1 = __FUNCTION__;
42*67e74705SXin Li  const char *s2 = __PRETTY_FUNCTION__;
43*67e74705SXin Li  [super im0];
44*67e74705SXin Li  int x = super.p0;
45*67e74705SXin Li}
46*67e74705SXin Li-(void) im1: (int) x, ... {
47*67e74705SXin Li}
48*67e74705SXin Li@end
49*67e74705SXin Li
50*67e74705SXin Li@implementation C : A
51*67e74705SXin Li@end
52*67e74705SXin Li
53*67e74705SXin Li@interface A (Cat)
54*67e74705SXin Li@end
55*67e74705SXin Li
56*67e74705SXin Li@implementation A (Cat)
57*67e74705SXin Li@end
58*67e74705SXin Li
59*67e74705SXin Li@interface B
60*67e74705SXin Li@end
61*67e74705SXin Li
62*67e74705SXin Liint f0(id x) {
63*67e74705SXin Li  @synchronized(x) {
64*67e74705SXin Li  }
65*67e74705SXin Li
66*67e74705SXin Li  @try {
67*67e74705SXin Li    @throw x;
68*67e74705SXin Li
69*67e74705SXin Li  } @catch(A *e) {
70*67e74705SXin Li    @throw;
71*67e74705SXin Li
72*67e74705SXin Li    // @catch param doesn't require name.
73*67e74705SXin Li  } @catch(B *) {
74*67e74705SXin Li
75*67e74705SXin Li  } @finally {
76*67e74705SXin Li    ;
77*67e74705SXin Li  }
78*67e74705SXin Li
79*67e74705SXin Li  for (id y in x) {
80*67e74705SXin Li    break;
81*67e74705SXin Li  }
82*67e74705SXin Li}
83*67e74705SXin Li
84*67e74705SXin Li#ifndef __OBJC2__
85*67e74705SXin Listruct s0 {
86*67e74705SXin Li  @defs(A);
87*67e74705SXin Li};
88*67e74705SXin Li#endif
89