xref: /llvm-project/clang/test/ARCMT/assign-prop-with-arc-runtime.m (revision 5a60686cf900467c7f7bcd7d11025bb27ac6a9ad)
19b0a7ceaSJohn McCall// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -x objective-c %s.result
29b0a7ceaSJohn McCall// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only %s > %t
3d70fb981SJohn McCall// RUN: diff %t %s.result
4d70fb981SJohn McCall
5d70fb981SJohn McCall#include "Common.h"
6d70fb981SJohn McCall
7ce9b7399SArgyrios Kyrtzidis__attribute__((objc_arc_weak_reference_unavailable))
8ce9b7399SArgyrios Kyrtzidis@interface WeakOptOut
9ce9b7399SArgyrios Kyrtzidis@end
10ce9b7399SArgyrios Kyrtzidis
11ce9b7399SArgyrios Kyrtzidis@class _NSCachedAttributedString;
12ce9b7399SArgyrios Kyrtzidistypedef _NSCachedAttributedString *BadClassForWeak;
13ce9b7399SArgyrios Kyrtzidis
14a200973eSArgyrios Kyrtzidis@class Forw;
15a200973eSArgyrios Kyrtzidis
16d70fb981SJohn McCall@interface Foo : NSObject {
17485eceedSArgyrios Kyrtzidis  Foo *x, *w, *q1, *q2;
18ce9b7399SArgyrios Kyrtzidis  WeakOptOut *oo;
19ce9b7399SArgyrios Kyrtzidis  BadClassForWeak bcw;
20ce9b7399SArgyrios Kyrtzidis  id not_safe1;
21ce9b7399SArgyrios Kyrtzidis  NSObject *not_safe2;
22a200973eSArgyrios Kyrtzidis  Forw *not_safe3;
2393907473SArgyrios Kyrtzidis  Foo *assign_plus1;
24d70fb981SJohn McCall}
25485eceedSArgyrios Kyrtzidis@property (readonly) Foo *x;
26ce9b7399SArgyrios Kyrtzidis@property (assign) Foo *w;
27c8b36197SArgyrios Kyrtzidis@property Foo *q1, *q2;
28ce9b7399SArgyrios Kyrtzidis@property (assign) WeakOptOut *oo;
29ce9b7399SArgyrios Kyrtzidis@property (assign) BadClassForWeak bcw;
30ce9b7399SArgyrios Kyrtzidis@property (assign) id not_safe1;
31c8b36197SArgyrios Kyrtzidis@property () NSObject *not_safe2;
32c8b36197SArgyrios Kyrtzidis@property Forw *not_safe3;
3393907473SArgyrios Kyrtzidis@property (readonly) Foo *assign_plus1;
3493907473SArgyrios Kyrtzidis@property (readonly) Foo *assign_plus2;
3593db2277SArgyrios Kyrtzidis@property (readonly) Foo *assign_plus3;
36c8b36197SArgyrios Kyrtzidis
37de223c3aSArgyrios Kyrtzidis@property (assign) Foo *no_user_ivar1;
38de223c3aSArgyrios Kyrtzidis@property (readonly) Foo *no_user_ivar2;
39ffe8b1c7SArgyrios Kyrtzidis
40ffe8b1c7SArgyrios Kyrtzidis@property (retain) id def1;
41ffe8b1c7SArgyrios Kyrtzidis@property (atomic,retain) id def2;
42ffe8b1c7SArgyrios Kyrtzidis@property (retain,atomic) id def3;
43ffe8b1c7SArgyrios Kyrtzidis
44d70fb981SJohn McCall@end
45d70fb981SJohn McCall
46d70fb981SJohn McCall@implementation Foo
47c8b36197SArgyrios Kyrtzidis@synthesize x,w,q1,q2,oo,bcw,not_safe1,not_safe2,not_safe3;
48de223c3aSArgyrios Kyrtzidis@synthesize no_user_ivar1, no_user_ivar2;
4993db2277SArgyrios Kyrtzidis@synthesize assign_plus1, assign_plus2, assign_plus3;
50ffe8b1c7SArgyrios Kyrtzidis@synthesize def1, def2, def3;
5193907473SArgyrios Kyrtzidis
5293db2277SArgyrios Kyrtzidis-(void)test:(Foo *)parm {
5393907473SArgyrios Kyrtzidis  assign_plus1 = [[Foo alloc] init];
5493907473SArgyrios Kyrtzidis  assign_plus2 = [Foo new];
5593db2277SArgyrios Kyrtzidis  assign_plus3 = [parm retain];
5693907473SArgyrios Kyrtzidis}
57d70fb981SJohn McCall@end
5805c65fbdSArgyrios Kyrtzidis
5905c65fbdSArgyrios Kyrtzidis@interface TestExt
6005c65fbdSArgyrios Kyrtzidis@property (retain,readonly) TestExt *x1;
6105c65fbdSArgyrios Kyrtzidis@property (readonly) TestExt *x2;
6205c65fbdSArgyrios Kyrtzidis@end
6305c65fbdSArgyrios Kyrtzidis
6405c65fbdSArgyrios Kyrtzidis@interface TestExt()
6505c65fbdSArgyrios Kyrtzidis@property (retain,readwrite) TestExt *x1;
6605c65fbdSArgyrios Kyrtzidis@property (readwrite) TestExt *x2;
67*28e0a7f6SArgyrios Kyrtzidis@property (retain) TestExt *x3;
6805c65fbdSArgyrios Kyrtzidis@end
6905c65fbdSArgyrios Kyrtzidis
7005c65fbdSArgyrios Kyrtzidis@implementation TestExt
71*28e0a7f6SArgyrios Kyrtzidis@synthesize x1, x2, x3;
7205c65fbdSArgyrios Kyrtzidis@end
73