diff options
Diffstat (limited to 'test/ARCMT/autoreleases.m')
-rw-r--r-- | test/ARCMT/autoreleases.m | 47 |
1 files changed, 32 insertions, 15 deletions
diff --git a/test/ARCMT/autoreleases.m b/test/ARCMT/autoreleases.m index 3acddb7..a131bc5 100644 --- a/test/ARCMT/autoreleases.m +++ b/test/ARCMT/autoreleases.m @@ -3,29 +3,21 @@ // RUN: diff %t %s.result // DISABLE: mingw32 -typedef unsigned char BOOL; +#include "Common.h" -@interface NSObject { - id isa; -} -+new; -+alloc; --init; --autorelease; -@end - -@interface NSAutoreleasePool : NSObject -- drain; -@end - @interface A : NSObject { @package id object; } @end -@interface B : NSObject +@interface B : NSObject { + id _prop; + xpc_object_t _xpc_prop; +} - (BOOL)containsSelf:(A*)a; +@property (retain) id prop; +@property (retain) xpc_object_t xpc_prop; @end @implementation A @@ -35,6 +27,26 @@ typedef unsigned char BOOL; - (BOOL)containsSelf:(A*)a { return a->object == self; } + +-(id) prop { + return _prop; +} +-(void) setProp:(id) newVal { + [_prop autorelease]; + _prop = [newVal retain]; +} +-(void) setProp2:(CFTypeRef) newVal { + [_prop autorelease]; + _prop = (id)CFRetain(newVal); +} + +-(id) xpc_prop { + return _xpc_prop; +} +-(void) setXpc_prop:(xpc_object_t) newVal { + [_xpc_prop autorelease]; + _xpc_prop = xpc_retain(newVal); +} @end void NSLog(id, ...); @@ -47,3 +59,8 @@ int main (int argc, const char * argv[]) { [pool drain]; return 0; } + +void test(A *prevVal, A *newVal) { + [prevVal autorelease]; + prevVal = [newVal retain]; +} |