| // 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 -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 -x objective-c++ %s > %t |
| // RUN: diff %t %s.result |
| // DISABLE: mingw32 |
| |
| #include "Common.h" |
| #include "GC.h" |
| |
| void test1(CFTypeRef *cft) { |
| id x = NSMakeCollectable(cft); |
| } |
| |
| @interface I1 |
| @end |
| |
| @implementation I1 |
| -(void)dealloc { |
| // dealloc |
| test1(0); |
| } |
| |
| -(void)finalize { |
| // finalize |
| test1(0); |
| } |
| @end |
| |
| @interface I2 |
| @property (retain) id prop; |
| @end |
| |
| @implementation I2 |
| @synthesize prop; |
| |
| -(void)finalize { |
| self.prop = 0; |
| // finalize |
| test1(0); |
| } |
| @end |
| |
| __attribute__((objc_arc_weak_reference_unavailable)) |
| @interface QQ { |
| __weak id s; |
| __weak QQ *q; |
| } |
| @end |
| |
| @interface I3 |
| @property (assign) I3 *__weak pw1, *__weak pw2; |
| @property (assign) I3 *__strong ps; |
| @property (assign) I3 * pds; |
| @end |
| |
| @interface I4Impl { |
| I4Impl *pds2; |
| I4Impl *pds3; |
| __weak I4Impl *pw3; |
| __weak I4Impl *pw4; |
| } |
| @property (assign) I4Impl *__weak pw1, *__weak pw2; |
| @property (assign) I4Impl *__strong ps; |
| @property (assign) I4Impl * pds; |
| @property (assign) I4Impl * pds2; |
| @property (readwrite) I4Impl * pds3; |
| @property (readonly) I4Impl * pds4; |
| @property (readonly) __weak I4Impl *pw3; |
| @property (assign) __weak I4Impl *pw4; |
| @end |
| |
| @implementation I4Impl |
| @synthesize pw1, pw2, pw3, pw4, ps, pds, pds2, pds3, pds4; |
| |
| -(void)test1:(CFTypeRef *)cft { |
| id x = NSMakeCollectable(cft); |
| } |
| @end |
| |
| // rdar://10532449 |
| @interface rdar10532449 |
| @property (assign) id assign_prop; |
| @property (assign, readonly) id __strong strong_readonly_prop; |
| @property (assign) id __weak weak_prop; |
| @end |
| |
| @implementation rdar10532449 |
| @synthesize assign_prop, strong_readonly_prop, weak_prop; |
| @end |
| |
| void test2(id p, __strong I1 *ap[]) { |
| for (__strong I1 *specRule in p) { |
| } |
| } |