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 10void 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