1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result 2 // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t 3 // RUN: diff %t %s.result 4 5 #include "Common.h" 6 7 @interface A : NSObject { 8 @package 9 id object; 10 } 11 @end 12 13 @interface B : NSObject { 14 id _prop; 15 xpc_object_t _xpc_prop; 16 } 17 - (BOOL)containsSelf:(A*)a; 18 @property (strong) id prop; 19 @property (strong) xpc_object_t xpc_prop; 20 @end 21 22 @implementation A 23 @end 24 25 @implementation B 26 - (BOOL)containsSelf:(A*)a { 27 return a->object == self; 28 } 29 30 -(id) prop { 31 return _prop; 32 } 33 -(void) setProp:(id) newVal { 34 _prop = newVal; 35 } 36 -(void) setProp2:(CFTypeRef) newVal { 37 _prop = (id)CFBridgingRelease(CFRetain(newVal)); 38 } 39 40 -(id) xpc_prop { 41 return _xpc_prop; 42 } 43 -(void) setXpc_prop:(xpc_object_t) newVal { 44 _xpc_prop = newVal; 45 } 46 @end 47 48 void NSLog(id, ...); 49 50 int main (int argc, const char * argv[]) { 51 @autoreleasepool { 52 A *a = [A new]; 53 B *b = [B new]; 54 NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO"); 55 } 56 return 0; 57 } 58 59 void test(A *prevVal, A *newVal) { 60 prevVal = newVal; 61 } 62 63 id test2(A* val) { 64 return val; 65 } 66 67 id test3() { 68 id a = [[A alloc] init]; 69 } 70