| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result |
| // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t |
| // RUN: diff %t %s.result |
| // DISABLE: mingw32 |
| |
| #include "Common.h" |
| |
| @interface A : NSObject { |
| @package |
| id object; |
| } |
| @end |
| |
| @interface B : NSObject { |
| id _prop; |
| xpc_object_t _xpc_prop; |
| } |
| - (BOOL)containsSelf:(A*)a; |
| @property (strong) id prop; |
| @property (strong) xpc_object_t xpc_prop; |
| @end |
| |
| @implementation A |
| @end |
| |
| @implementation B |
| - (BOOL)containsSelf:(A*)a { |
| return a->object == self; |
| } |
| |
| -(id) prop { |
| return _prop; |
| } |
| -(void) setProp:(id) newVal { |
| _prop = newVal; |
| } |
| -(void) setProp2:(CFTypeRef) newVal { |
| _prop = (__bridge_transfer id)CFRetain(newVal); |
| } |
| |
| -(id) xpc_prop { |
| return _xpc_prop; |
| } |
| -(void) setXpc_prop:(xpc_object_t) newVal { |
| _xpc_prop = newVal; |
| } |
| @end |
| |
| void NSLog(id, ...); |
| |
| int main (int argc, const char * argv[]) { |
| @autoreleasepool { |
| A *a = [A new]; |
| B *b = [B new]; |
| NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO"); |
| } |
| return 0; |
| } |
| |
| void test(A *prevVal, A *newVal) { |
| prevVal = newVal; |
| } |