1 // RUN: %clang_cc1 -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result 2 // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c %s > %t 3 // RUN: diff %t %s.result 4 // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -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 = CFBridgingRelease(cft); 12 } 13 14 @interface I1 15 @end 16 17 @implementation I1 18 -(void)dealloc { 19 // dealloc 20 test1(0); 21 } 22 23 #if !__has_feature(objc_arc) 24 -(void)finalize { 25 // finalize 26 test1(0); 27 } 28 #endif 29 @end 30 31 @interface I2 32 @property (strong) id prop; 33 @end 34 35 @implementation I2 36 @synthesize prop; 37 38 #if !__has_feature(objc_arc) 39 -(void)finalize { 40 self.prop = 0; 41 // finalize 42 test1(0); 43 } 44 #endif 45 -(void)dealloc { 46 // finalize 47 test1(0); 48 } 49 @end 50 51 __attribute__((objc_arc_weak_reference_unavailable)) 52 @interface QQ { 53 __weak id s; 54 __unsafe_unretained QQ *q; 55 } 56 @end 57 58 @interface I3 59 @property (weak) I3 * pw1, * pw2; 60 @property (strong) I3 * ps; 61 @property (assign) I3 * pds; 62 @end 63 64 @interface I4Impl { 65 I4Impl *__strong pds2; 66 I4Impl *pds3; 67 __weak I4Impl *pw3; 68 __weak I4Impl *pw4; 69 } 70 @property (weak) I4Impl * pw1, * pw2; 71 @property (strong) I4Impl * ps; 72 @property (strong) I4Impl * pds; 73 @property (strong) I4Impl * pds2; 74 @property (readwrite) I4Impl * pds3; 75 @property (readonly) I4Impl * pds4; 76 @property (weak, readonly) I4Impl *pw3; 77 @property (weak) I4Impl *pw4; 78 @end 79 80 @implementation I4Impl 81 @synthesize pw1, pw2, pw3, pw4, ps, pds, pds2, pds3, pds4; 82 83 -(void)test1:(CFTypeRef *)cft { 84 id x = CFBridgingRelease(cft); 85 } 86 @end 87 88 // rdar://10532449 89 @interface rdar10532449 90 @property (strong) id assign_prop; 91 @property (strong, readonly) id strong_readonly_prop; 92 @property (weak) id weak_prop; 93 @end 94 95 @implementation rdar10532449 96 @synthesize assign_prop, strong_readonly_prop, weak_prop; 97 @end 98