summaryrefslogtreecommitdiffstats
path: root/test/ARCMT/autoreleases.m
diff options
context:
space:
mode:
Diffstat (limited to 'test/ARCMT/autoreleases.m')
-rw-r--r--test/ARCMT/autoreleases.m47
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];
+}
OpenPOWER on IntegriCloud