50 lines
		
	
	
		
			941 B
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			941 B
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -fblocks -fsyntax-only -verify -Wno-objc-root-class %s
 | |
| // expected-no-diagnostics
 | |
| 
 | |
| @interface NSObject
 | |
| - (id)self;
 | |
| - (id)copy;
 | |
| @end
 | |
| 
 | |
| typedef struct _foo  *__attribute__((NSObject)) Foo_ref;
 | |
| 
 | |
| @interface TestObject {
 | |
|     Foo_ref dict;
 | |
| }
 | |
| @property(retain) Foo_ref dict;
 | |
| @end
 | |
| 
 | |
| @implementation TestObject
 | |
| @synthesize dict;
 | |
| @end
 | |
| 
 | |
| @interface NSDictionary
 | |
| - (int)retainCount;
 | |
| @end
 | |
| 
 | |
| int main(int argc, char *argv[]) {
 | |
|     NSDictionary *dictRef;
 | |
|     Foo_ref foo = (Foo_ref)dictRef;
 | |
| 
 | |
|     // do Properties retain?
 | |
|     int before = [dictRef retainCount];
 | |
|     int after = [dictRef retainCount];
 | |
| 
 | |
|     if ([foo retainCount] != [dictRef retainCount]) {
 | |
|     }
 | |
| 
 | |
|     // do Blocks retain?
 | |
|     {
 | |
|         void (^block)(void) = ^{
 | |
|             [foo self];
 | |
|         };
 | |
|         before = [foo retainCount];
 | |
|         id save = [block copy];
 | |
|         after = [foo retainCount];
 | |
|         if (after <= before) {
 | |
|             ;
 | |
|         }
 | |
|     }
 | |
|     return 0;
 | |
| }
 |