[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / SemaObjC / property-12.m
blob7a3ed8dbfb1a886925936c04ed5a4f89cd93d2c5
1 // RUN: %clang_cc1 -fsyntax-only -Wno-objc-root-class -verify %s
3 @protocol P0
4 @property(readonly,assign) id X;
5 @end
7 @protocol P1
8 @property(readonly,retain) id X;
9 @end
11 @protocol P2
12 @property(readonly,copy) id X;
13 @end
15 @protocol P3
16 @property(readonly,readwrite) id X; // expected-error {{property attributes 'readonly' and 'readwrite' are mutually exclusive}}
17 @end
19 @protocol P4
20 @property(assign,copy) id X; // expected-error {{property attributes 'assign' and 'copy' are mutually exclusive}}
21 @end
23 @protocol P5
24 @property(assign,retain) id X; // expected-error {{property attributes 'assign' and 'retain' are mutually exclusive}}
25 @end
27 @protocol P6
28 @property(copy,retain) id X; // expected-error {{property attributes 'copy' and 'retain' are mutually exclusive}}
29 @end
31 @interface I0 <P0> @end
32 @implementation I0 
33 @synthesize X;
34 @end
36 @interface I1 <P1> @end
37 @implementation I1 
38 @synthesize X;
39 @end
41 @interface I2 <P2> @end
42 @implementation I2 
43 @synthesize X;
44 @end
46 @interface I3 <P3> @end
47 @implementation I3 
48 @synthesize X;
49 @end
51 @interface I4 <P4> @end
52 @implementation I4 
53 @synthesize X;
54 @end
56 @interface I5 <P5> @end
57 @implementation I5 
58 @synthesize X;
59 @end
61 @interface I6 <P6> @end
62 @implementation I6 
63 @synthesize X;
64 @end