• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %s.result
2// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -fsyntax-only -x objective-c %s > %t
3// RUN: diff %t %s.result
4
5typedef unsigned char BOOL;
6
7@interface NSObject {
8  id isa;
9}
10+new;
11+alloc;
12-init;
13-autorelease;
14@end
15
16@interface NSAutoreleasePool : NSObject
17- drain;
18@end
19
20@interface A : NSObject {
21@package
22    id object;
23}
24@end
25
26@interface B : NSObject
27- (BOOL)containsSelf:(A*)a;
28@end
29
30@implementation A
31@end
32
33@implementation B
34- (BOOL)containsSelf:(A*)a {
35    return a->object == self;
36}
37@end
38
39void NSLog(id, ...);
40
41int main (int argc, const char * argv[]) {
42    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
43    A *a = [[A new] autorelease];
44    B *b = [[B new] autorelease];
45    NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO");
46    [pool drain];
47    return 0;
48}
49