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