summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm')
-rw-r--r--clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm23
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm b/clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm
new file mode 100644
index 00000000000..2796512ac09
--- /dev/null
+++ b/clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm
@@ -0,0 +1,23 @@
+// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s
+// radar 7562285
+
+typedef int (^blocktype)(int a, int b);
+
+@interface A {
+ A* a;
+ id b;
+ Class c;
+}
+- (blocktype)Meth;
+@end
+
+@implementation A
+- (blocktype)Meth {
+ if (b)
+ return (blocktype)b;
+ else if (a)
+ return (blocktype)a; // expected-error {{C-style cast from 'A *' to 'blocktype' (aka 'int (^)(int, int)') is not allowed}}
+ else
+ return (blocktype)c;
+}
+@end
OpenPOWER on IntegriCloud