1*67e74705SXin Li// RUN: %clang_cc1 -triple i686-pc-windows -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp 2*67e74705SXin Li// RUN: %clang_cc1 -triple i686-pc-windows -fsyntax-only -fms-extensions -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp 3*67e74705SXin Li// RUN: %clang_cc1 -triple i686-pc-windows -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp 4*67e74705SXin Li// RUN: %clang_cc1 -triple i686-pc-windows -fsyntax-only -fms-extensions -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp 5*67e74705SXin Li// radar 8608293 6*67e74705SXin Li 7*67e74705SXin Litypedef unsigned long size_t; 8*67e74705SXin Livoid *sel_registerName(const char *); 9*67e74705SXin Li 10*67e74705SXin Liextern "C" void nowarn(id); 11*67e74705SXin Li 12*67e74705SXin Liextern "C" void noblockwarn(void (^)()); 13*67e74705SXin Li 14*67e74705SXin Li@interface INTFOFPROP 15*67e74705SXin Li@property (readwrite, retain) INTFOFPROP *outer; 16*67e74705SXin Li@property (readwrite, retain) id inner; 17*67e74705SXin Li@end 18*67e74705SXin Li 19*67e74705SXin Li@interface NSSet 20*67e74705SXin Li- (NSSet *)objectsPassingTest:(char (^)(id obj, char *stop))predicate ; 21*67e74705SXin Li@end 22*67e74705SXin Li 23*67e74705SXin Li@interface INTF 24*67e74705SXin Li- (NSSet *)Meth; 25*67e74705SXin Li@end 26*67e74705SXin Li 27*67e74705SXin Li@implementation INTF 28*67e74705SXin Li 29*67e74705SXin Li- (NSSet *)Meth 30*67e74705SXin Li{ 31*67e74705SXin Li NSSet *aces; 32*67e74705SXin Li 33*67e74705SXin Li noblockwarn(^() { 34*67e74705SXin Li INTFOFPROP *ace; 35*67e74705SXin Li nowarn(ace.outer.inner); 36*67e74705SXin Li noblockwarn(^() { 37*67e74705SXin Li INTFOFPROP *ace; 38*67e74705SXin Li nowarn(ace.outer.inner); 39*67e74705SXin Li }); 40*67e74705SXin Li }); 41*67e74705SXin Li 42*67e74705SXin Li noblockwarn(^() { 43*67e74705SXin Li INTFOFPROP *ace; 44*67e74705SXin Li nowarn(ace.outer.inner); 45*67e74705SXin Li }); 46*67e74705SXin Li 47*67e74705SXin Lireturn [aces objectsPassingTest:^(id obj, char *stop) 48*67e74705SXin Li { 49*67e74705SXin Li INTFOFPROP *ace = (INTFOFPROP *)obj; 50*67e74705SXin Li nowarn(ace.outer.inner); 51*67e74705SXin Li return (char)0; 52*67e74705SXin Li }]; 53*67e74705SXin Li 54*67e74705SXin Li} 55*67e74705SXin Li@end 56