// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c %s > %t // RUN: diff %t %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c++ %s > %t // RUN: diff %t %s.result #include "Common.h" #include "GC.h" void test1(CFTypeRef *cft) { id x = CFBridgingRelease(cft); } @interface I1 @end @implementation I1 -(void)dealloc { // dealloc test1(0); } #if !__has_feature(objc_arc) -(void)finalize { // finalize test1(0); } #endif @end @interface I2 @property (strong) id prop; @end @implementation I2 @synthesize prop; #if !__has_feature(objc_arc) -(void)finalize { self.prop = 0; // finalize test1(0); } #endif -(void)dealloc { // finalize test1(0); } @end __attribute__((objc_arc_weak_reference_unavailable)) @interface QQ { __weak id s; __unsafe_unretained QQ *q; } @end @interface I3 @property (weak) I3 * pw1, * pw2; @property (strong) I3 * ps; @property (assign) I3 * pds; @end @interface I4Impl { I4Impl *__strong pds2; I4Impl *pds3; __weak I4Impl *pw3; __weak I4Impl *pw4; } @property (weak) I4Impl * pw1, * pw2; @property (strong) I4Impl * ps; @property (strong) I4Impl * pds; @property (strong) I4Impl * pds2; @property (readwrite) I4Impl * pds3; @property (readonly) I4Impl * pds4; @property (weak, readonly) I4Impl *pw3; @property (weak) I4Impl *pw4; @end @implementation I4Impl @synthesize pw1, pw2, pw3, pw4, ps, pds, pds2, pds3, pds4; -(void)test1:(CFTypeRef *)cft { id x = CFBridgingRelease(cft); } @end // rdar://10532449 @interface rdar10532449 @property (strong) id assign_prop; @property (strong, readonly) id strong_readonly_prop; @property (weak) id weak_prop; @end @implementation rdar10532449 @synthesize assign_prop, strong_readonly_prop, weak_prop; @end