12519a080SArgyrios Kyrtzidis// RUN: %clang_cc1 -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result 22519a080SArgyrios Kyrtzidis// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c %s > %t 32519a080SArgyrios Kyrtzidis// RUN: diff %t %s.result 42519a080SArgyrios Kyrtzidis// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t 52519a080SArgyrios Kyrtzidis// RUN: diff %t %s.result 62519a080SArgyrios Kyrtzidis 72519a080SArgyrios Kyrtzidis#include "Common.h" 82519a080SArgyrios Kyrtzidis#include "GC.h" 92519a080SArgyrios Kyrtzidis 102519a080SArgyrios Kyrtzidisvoid test1(CFTypeRef *cft) { 112519a080SArgyrios Kyrtzidis id x = CFBridgingRelease(cft); 122519a080SArgyrios Kyrtzidis} 132519a080SArgyrios Kyrtzidis 14*01c047e0SArgyrios Kyrtzidis@interface I1 152519a080SArgyrios Kyrtzidis@end 162519a080SArgyrios Kyrtzidis 172519a080SArgyrios Kyrtzidis@implementation I1 182519a080SArgyrios Kyrtzidis-(void)dealloc { 192519a080SArgyrios Kyrtzidis // dealloc 202519a080SArgyrios Kyrtzidis test1(0); 212519a080SArgyrios Kyrtzidis} 222519a080SArgyrios Kyrtzidis 232519a080SArgyrios Kyrtzidis@end 242519a080SArgyrios Kyrtzidis 252519a080SArgyrios Kyrtzidis@interface I2 269652adf2SFariborz Jahanian@property (strong) id prop; 272519a080SArgyrios Kyrtzidis@end 282519a080SArgyrios Kyrtzidis 292519a080SArgyrios Kyrtzidis@implementation I2 302519a080SArgyrios Kyrtzidis@synthesize prop; 312519a080SArgyrios Kyrtzidis 322519a080SArgyrios Kyrtzidis-(void)dealloc { 332519a080SArgyrios Kyrtzidis // finalize 342519a080SArgyrios Kyrtzidis test1(0); 352519a080SArgyrios Kyrtzidis} 362519a080SArgyrios Kyrtzidis@end 372519a080SArgyrios Kyrtzidis 382519a080SArgyrios Kyrtzidis__attribute__((objc_arc_weak_reference_unavailable)) 392519a080SArgyrios Kyrtzidis@interface QQ { 402519a080SArgyrios Kyrtzidis __unsafe_unretained id s; 412519a080SArgyrios Kyrtzidis __unsafe_unretained QQ *q; 422519a080SArgyrios Kyrtzidis} 432519a080SArgyrios Kyrtzidis@end 442519a080SArgyrios Kyrtzidis 452519a080SArgyrios Kyrtzidis@interface I3 462519a080SArgyrios Kyrtzidis@property (unsafe_unretained) I3 * pw1, * pw2; 472519a080SArgyrios Kyrtzidis@property (strong) I3 * ps; 482519a080SArgyrios Kyrtzidis@property (assign) I3 * pds; 492519a080SArgyrios Kyrtzidis@end 502519a080SArgyrios Kyrtzidis 512519a080SArgyrios Kyrtzidis@interface I4Impl { 521630c15bSFariborz Jahanian I4Impl *__strong pds2; 532519a080SArgyrios Kyrtzidis} 542519a080SArgyrios Kyrtzidis@property (unsafe_unretained) I4Impl * pw1, * pw2; 551630c15bSFariborz Jahanian@property (strong) I4Impl * ps; 561630c15bSFariborz Jahanian@property (strong) I4Impl * pds; 571630c15bSFariborz Jahanian@property (strong) I4Impl * pds2; 582519a080SArgyrios Kyrtzidis@end 592519a080SArgyrios Kyrtzidis 602519a080SArgyrios Kyrtzidis@implementation I4Impl 612519a080SArgyrios Kyrtzidis@synthesize pw1, pw2, ps, pds, pds2; 622519a080SArgyrios Kyrtzidis 632519a080SArgyrios Kyrtzidis-(void)test1:(CFTypeRef *)cft { 642519a080SArgyrios Kyrtzidis id x = CFBridgingRelease(cft); 652519a080SArgyrios Kyrtzidis} 662519a080SArgyrios Kyrtzidis@end 67eca1f36aSArgyrios Kyrtzidis 68eca1f36aSArgyrios Kyrtzidis@interface I5 { 69eca1f36aSArgyrios Kyrtzidis __unsafe_unretained id prop; 70eca1f36aSArgyrios Kyrtzidis} 71eca1f36aSArgyrios Kyrtzidis@property (unsafe_unretained, readonly) id prop; 72eca1f36aSArgyrios Kyrtzidis@end 73