|  | // RUN: %clang_cc1 -fsyntax-only -verify %s | 
|  |  | 
|  | typedef unsigned char BOOL; | 
|  |  | 
|  | @interface NSObject { | 
|  | id isa; | 
|  | } | 
|  | +new; | 
|  | +alloc; | 
|  | -init; | 
|  | -autorelease; | 
|  | @end | 
|  |  | 
|  | @interface NSAutoreleasePool : NSObject | 
|  | - drain; | 
|  | @end | 
|  |  | 
|  | @interface A : NSObject { | 
|  | @package | 
|  | id object; | 
|  | } | 
|  | @end | 
|  |  | 
|  | @interface B : NSObject | 
|  | - (BOOL)containsSelf:(A*)a; | 
|  | @end | 
|  |  | 
|  | @implementation A | 
|  | @end | 
|  |  | 
|  | @implementation B | 
|  | - (BOOL)containsSelf:(A*)a { | 
|  | return a->object == self; | 
|  | } | 
|  | @end | 
|  |  | 
|  | void NSLog(id, ...); | 
|  |  | 
|  | int main (int argc, const char * argv[]) { | 
|  | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; | 
|  | A *a = [[A new] autorelease]; | 
|  | B *b = [[B new] autorelease]; | 
|  | NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO"); | 
|  | [pool drain]; | 
|  | return 0; | 
|  | } | 
|  |  |