71 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// 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 = (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];
 | 
						|
}
 |