summaryrefslogtreecommitdiffstats
path: root/libcxxabi/test/catch_function_01.cpp
diff options
context:
space:
mode:
authorHoward Hinnant <hhinnant@apple.com>2012-02-01 19:42:45 +0000
committerHoward Hinnant <hhinnant@apple.com>2012-02-01 19:42:45 +0000
commita21f8c2acf8852b15a28256fe6424ac295d770b0 (patch)
tree05c6b69b396053794dbaa26f72926fa1707221dc /libcxxabi/test/catch_function_01.cpp
parentccfa90a5fe0e7b919ff0368a8d59c763733905f3 (diff)
downloadbcm5719-llvm-a21f8c2acf8852b15a28256fe6424ac295d770b0.tar.gz
bcm5719-llvm-a21f8c2acf8852b15a28256fe6424ac295d770b0.zip
Quash TODO regarding catch by function type. Add tests to back it up.
llvm-svn: 149530
Diffstat (limited to 'libcxxabi/test/catch_function_01.cpp')
-rw-r--r--libcxxabi/test/catch_function_01.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/libcxxabi/test/catch_function_01.cpp b/libcxxabi/test/catch_function_01.cpp
new file mode 100644
index 00000000000..33999f23de6
--- /dev/null
+++ b/libcxxabi/test/catch_function_01.cpp
@@ -0,0 +1,31 @@
+//===----------------------- catch_function_01.cpp ------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// Can you have a catch clause of array type that catches anything?
+
+#include <cassert>
+
+void f() {}
+
+int main()
+{
+ typedef void Function();
+ try
+ {
+ throw f; // converts to void (*)()
+ assert(false);
+ }
+ catch (Function& b) // can't catch void (*)()
+ {
+ assert(false);
+ }
+ catch (...)
+ {
+ }
+}
OpenPOWER on IntegriCloud