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