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 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@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 86void test2(id p, __strong I1 *ap[]) { 87 for (__strong I1 *specRule in p) { 88 } 89} 90