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 -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 -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 @end 24 25 @interface I2 26 @property (strong) id prop; 27 @end 28 29 @implementation I2 30 @synthesize prop; 31 32 -(void)dealloc { 33 // finalize 34 test1(0); 35 } 36 @end 37 38 __attribute__((objc_arc_weak_reference_unavailable)) 39 @interface QQ { 40 __weak id s; 41 __unsafe_unretained QQ *q; 42 } 43 @end 44 45 @interface I3 46 @property (weak) I3 * pw1, * pw2; 47 @property (strong) I3 * ps; 48 @property (assign) I3 * pds; 49 @end 50 51 @interface I4Impl { 52 I4Impl *__strong pds2; 53 I4Impl *pds3; 54 __weak I4Impl *pw3; 55 __weak I4Impl *pw4; 56 } 57 @property (weak) I4Impl * pw1, * pw2; 58 @property (strong) I4Impl * ps; 59 @property (strong) I4Impl * pds; 60 @property (strong) I4Impl * pds2; 61 @property (readwrite) I4Impl * pds3; 62 @property (readonly) I4Impl * pds4; 63 @property (weak, readonly) I4Impl *pw3; 64 @property (weak) I4Impl *pw4; 65 @end 66 67 @implementation I4Impl 68 @synthesize pw1, pw2, pw3, pw4, ps, pds, pds2, pds3, pds4; 69 70 -(void)test1:(CFTypeRef *)cft { 71 id x = CFBridgingRelease(cft); 72 } 73 @end 74 75 // rdar://10532449 76 @interface rdar10532449 77 @property (strong) id assign_prop; 78 @property (strong, readonly) id strong_readonly_prop; 79 @property (weak) id weak_prop; 80 @end 81 82 @implementation rdar10532449 83 @synthesize assign_prop, strong_readonly_prop, weak_prop; 84 @end 85 86 void test2(id p, __strong I1 *ap[]) { 87 for (__strong I1 *specRule in p) { 88 } 89 } 90