1acfbe9e1SPatrick Beard// RUN: %clang_cc1 -fblocks -fsyntax-only -verify -Wno-objc-root-class %s 2*c6e68daaSAndy Gibbs// expected-no-diagnostics 38c46fec4SFariborz Jahanian 48c46fec4SFariborz Jahanian@interface NSObject 58c46fec4SFariborz Jahanian- (id)self; 68c46fec4SFariborz Jahanian- (id)copy; 78c46fec4SFariborz Jahanian@end 88c46fec4SFariborz Jahanian 98c46fec4SFariborz Jahaniantypedef struct _foo *__attribute__((NSObject)) Foo_ref; 108c46fec4SFariborz Jahanian 118c46fec4SFariborz Jahanian@interface TestObject { 128c46fec4SFariborz Jahanian Foo_ref dict; 138c46fec4SFariborz Jahanian} 148c46fec4SFariborz Jahanian@property(retain) Foo_ref dict; 158c46fec4SFariborz Jahanian@end 168c46fec4SFariborz Jahanian 178c46fec4SFariborz Jahanian@implementation TestObject 188c46fec4SFariborz Jahanian@synthesize dict; 198c46fec4SFariborz Jahanian@end 208c46fec4SFariborz Jahanian 218c46fec4SFariborz Jahanian@interface NSDictionary 228c46fec4SFariborz Jahanian- (int)retainCount; 238c46fec4SFariborz Jahanian@end 248c46fec4SFariborz Jahanian 258c46fec4SFariborz Jahanianint main(int argc, char *argv[]) { 268c46fec4SFariborz Jahanian NSDictionary *dictRef; 278c46fec4SFariborz Jahanian Foo_ref foo = (Foo_ref)dictRef; 288c46fec4SFariborz Jahanian 298c46fec4SFariborz Jahanian // do Properties retain? 308c46fec4SFariborz Jahanian int before = [dictRef retainCount]; 318c46fec4SFariborz Jahanian int after = [dictRef retainCount]; 328c46fec4SFariborz Jahanian 338c46fec4SFariborz Jahanian if ([foo retainCount] != [dictRef retainCount]) { 348c46fec4SFariborz Jahanian } 358c46fec4SFariborz Jahanian 368c46fec4SFariborz Jahanian // do Blocks retain? 378c46fec4SFariborz Jahanian { 388c46fec4SFariborz Jahanian void (^block)(void) = ^{ 398c46fec4SFariborz Jahanian [foo self]; 408c46fec4SFariborz Jahanian }; 418c46fec4SFariborz Jahanian before = [foo retainCount]; 428c46fec4SFariborz Jahanian id save = [block copy]; 438c46fec4SFariborz Jahanian after = [foo retainCount]; 448c46fec4SFariborz Jahanian if (after <= before) { 458c46fec4SFariborz Jahanian ; 468c46fec4SFariborz Jahanian } 478c46fec4SFariborz Jahanian } 488c46fec4SFariborz Jahanian return 0; 498c46fec4SFariborz Jahanian} 50