1 // RUN: %clang_cc1 -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result 2 // RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c %s > %t 3 // RUN: diff %t %s.result 4 // RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t 5 // RUN: diff %t %s.result 6 7 #include "Common.h" 8 #include "GC.h" 9 10 void test1(CFTypeRef *cft) { 11 id x = NSMakeCollectable(cft); 12 } 13 14 @interface I1 15 @end 16 17 @implementation I1 18 -(void)dealloc { 19 // dealloc 20 test1(0); 21 } 22 23 -(void)finalize { 24 // finalize 25 test1(0); 26 } 27 @end 28 29 @interface I2 30 @property (retain) id prop; 31 @end 32 33 @implementation I2 34 @synthesize prop; 35 36 -(void)finalize { 37 self.prop = 0; 38 // finalize 39 test1(0); 40 } 41 @end 42 43 __attribute__((objc_arc_weak_reference_unavailable)) 44 @interface QQ { 45 __weak id s; 46 __weak QQ *q; 47 } 48 @end 49 50 @interface I3 51 @property (assign) I3 *__weak pw1, *__weak pw2; 52 @property (assign) I3 *__strong ps; 53 @property (assign) I3 * pds; 54 @end 55 56 @interface I4Impl { 57 I4Impl *pds2; 58 } 59 @property (assign) I4Impl *__weak pw1, *__weak pw2; 60 @property (assign) I4Impl *__strong ps; 61 @property (assign) I4Impl * pds; 62 @property (assign) I4Impl * pds2; 63 @end 64 65 @implementation I4Impl 66 @synthesize pw1, pw2, ps, pds, pds2; 67 68 -(void)test1:(CFTypeRef *)cft { 69 id x = NSMakeCollectable(cft); 70 } 71 @end 72 73 @interface I5 { 74 __weak id prop; 75 } 76 @property (readonly) __weak id prop; 77 @end 78