blob: 7f9361ed0788dfdc2075344ec90d59a33e2484e6 [file] [log] [blame]
Fariborz Jahanian9e0393d2012-02-04 19:06:06 +00001// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-fragile-abi %s -o %t-rw.cpp
Fariborz Jahanianda4ad9f2010-11-08 18:37:50 +00002// RUN: %clang_cc1 -fsyntax-only -fms-extensions -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
Fariborz Jahanian43aa1c32012-04-16 22:14:01 +00003// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
4// RUN: %clang_cc1 -fsyntax-only -fms-extensions -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
Fariborz Jahanianda4ad9f2010-11-08 18:37:50 +00005// radar 8608293
6
Fariborz Jahanianda4ad9f2010-11-08 18:37:50 +00007void *sel_registerName(const char *);
8
9extern "C" void nowarn(id);
10
11extern "C" void noblockwarn(void (^)());
12
13@interface INTFOFPROP
14@property (readwrite, retain) INTFOFPROP *outer;
15@property (readwrite, retain) id inner;
16@end
17
18@interface NSSet
19- (NSSet *)objectsPassingTest:(char (^)(id obj, char *stop))predicate ;
20@end
21
22@interface INTF
23- (NSSet *)Meth;
24@end
25
26@implementation INTF
27
28- (NSSet *)Meth
29{
30 NSSet *aces;
31
32 noblockwarn(^() {
33 INTFOFPROP *ace;
34 nowarn(ace.outer.inner);
35 noblockwarn(^() {
36 INTFOFPROP *ace;
37 nowarn(ace.outer.inner);
38 });
39 });
40
41 noblockwarn(^() {
42 INTFOFPROP *ace;
43 nowarn(ace.outer.inner);
44 });
45
46return [aces objectsPassingTest:^(id obj, char *stop)
47 {
48 INTFOFPROP *ace = (INTFOFPROP *)obj;
49 nowarn(ace.outer.inner);
50 return (char)0;
51 }];
52
53}
54@end