150
|
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 }
|