xref: /aosp_15_r20/external/clang/test/SemaObjC/ivar-access-package.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s
2*67e74705SXin Li// expected-no-diagnostics
3*67e74705SXin Li
4*67e74705SXin Litypedef unsigned char BOOL;
5*67e74705SXin Li
6*67e74705SXin Li@interface NSObject {
7*67e74705SXin Li  id isa;
8*67e74705SXin Li}
9*67e74705SXin Li+new;
10*67e74705SXin Li+alloc;
11*67e74705SXin Li-init;
12*67e74705SXin Li-autorelease;
13*67e74705SXin Li@end
14*67e74705SXin Li
15*67e74705SXin Li@interface NSAutoreleasePool : NSObject
16*67e74705SXin Li- drain;
17*67e74705SXin Li@end
18*67e74705SXin Li
19*67e74705SXin Li@interface A : NSObject {
20*67e74705SXin Li@package
21*67e74705SXin Li    id object;
22*67e74705SXin Li}
23*67e74705SXin Li@end
24*67e74705SXin Li
25*67e74705SXin Li@interface B : NSObject
26*67e74705SXin Li- (BOOL)containsSelf:(A*)a;
27*67e74705SXin Li@end
28*67e74705SXin Li
29*67e74705SXin Li@implementation A
30*67e74705SXin Li@end
31*67e74705SXin Li
32*67e74705SXin Li@implementation B
33*67e74705SXin Li- (BOOL)containsSelf:(A*)a {
34*67e74705SXin Li    return a->object == self;
35*67e74705SXin Li}
36*67e74705SXin Li@end
37*67e74705SXin Li
38*67e74705SXin Livoid NSLog(id, ...);
39*67e74705SXin Li
40*67e74705SXin Liint main (int argc, const char * argv[]) {
41*67e74705SXin Li    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
42*67e74705SXin Li    A *a = [[A new] autorelease];
43*67e74705SXin Li    B *b = [[B new] autorelease];
44*67e74705SXin Li    NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO");
45*67e74705SXin Li    [pool drain];
46*67e74705SXin Li    return 0;
47*67e74705SXin Li}
48*67e74705SXin Li
49