summaryrefslogtreecommitdiffstats
path: root/test/Rewriter/rewrite-modern-block.mm
diff options
context:
space:
mode:
Diffstat (limited to 'test/Rewriter/rewrite-modern-block.mm')
-rw-r--r--test/Rewriter/rewrite-modern-block.mm44
1 files changed, 43 insertions, 1 deletions
diff --git a/test/Rewriter/rewrite-modern-block.mm b/test/Rewriter/rewrite-modern-block.mm
index 8da723d..2302965 100644
--- a/test/Rewriter/rewrite-modern-block.mm
+++ b/test/Rewriter/rewrite-modern-block.mm
@@ -1,7 +1,8 @@
// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
+// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
// rdar://11230308
+typedef unsigned long size_t;
typedef struct {
char byte0;
char byte1;
@@ -20,4 +21,45 @@ void y() {
// rdar://11236342
int foo() {
__block int hello;
+ return hello;
}
+
+// rdar://7547630
+// rewriting multiple __block decls on wintin same decl stmt.
+void radar7547630() {
+ __block int BI1, BI2;
+
+ __block float FLOAT1, FT2, FFFFFFFF3,
+ FFFXXX4;
+
+ __block void (^B)(), (^BB)();
+}
+
+// rewriting multiple __block decls on wintin same decl stmt
+// with initializers.
+int rdar7547630(const char *keybuf, const char *valuebuf) {
+ __block int BI1 = 1, BI2 = 2;
+
+ double __block BYREFVAR = 1.34, BYREFVAR_NO_INIT, BYREFVAR2 = 1.37;
+
+ __block const char *keys = keybuf, *values = valuebuf, *novalues;
+
+ return BI2;
+}
+
+// rdar://11326988
+typedef struct _z {
+ int location;
+ int length;
+} z;
+
+z w(int loc, int len);
+
+@interface rdar11326988
+@end
+@implementation rdar11326988
+- (void)y:(int)options {
+ __attribute__((__blocks__(byref))) z firstRange = w(1, 0);
+ options &= ~(1 | 2);
+}
+@end
OpenPOWER on IntegriCloud