49 lines
		
	
	
		
			743 B
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			743 B
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s
 | |
| // expected-no-diagnostics
 | |
| 
 | |
| 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;
 | |
| }
 | |
| 
 |