// 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 #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 = (id)CFBridgingRelease(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; } id test2(A* val) { return val; } id test3() { id a = [[A alloc] init]; }