[libcxx] r273382 - Add tests for RTTI/exceptions test macros.
Eric Fiselier via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 21 22:29:15 PDT 2016
Author: ericwf
Date: Wed Jun 22 00:29:15 2016
New Revision: 273382
URL: http://llvm.org/viewvc/llvm-project?rev=273382&view=rev
Log:
Add tests for RTTI/exceptions test macros.
Added:
libcxx/trunk/test/support/test.support/
libcxx/trunk/test/support/test.support/test_convertible_header.pass.cpp
libcxx/trunk/test/support/test.support/test_macros_header_exceptions.fail.cpp
libcxx/trunk/test/support/test.support/test_macros_header_exceptions.pass.cpp
libcxx/trunk/test/support/test.support/test_macros_header_rtti.fail.cpp
libcxx/trunk/test/support/test.support/test_macros_header_rtti.pass.cpp
Removed:
libcxx/trunk/test/support/test_convertible_header.pass.cpp
Added: libcxx/trunk/test/support/test.support/test_convertible_header.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/test.support/test_convertible_header.pass.cpp?rev=273382&view=auto
==============================================================================
--- libcxx/trunk/test/support/test.support/test_convertible_header.pass.cpp (added)
+++ libcxx/trunk/test/support/test.support/test_convertible_header.pass.cpp Wed Jun 22 00:29:15 2016
@@ -0,0 +1,68 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03
+
+// "support/test_convertible.hpp"
+
+#include "test_convertible.hpp"
+
+struct ImplicitDefault {
+ ImplicitDefault() {}
+};
+static_assert(test_convertible<ImplicitDefault>(), "Must be convertible");
+
+struct ExplicitDefault {
+ explicit ExplicitDefault() {}
+};
+static_assert(!test_convertible<ExplicitDefault>(), "Must not be convertible");
+
+struct ImplicitInt {
+ ImplicitInt(int) {}
+};
+static_assert(test_convertible<ImplicitInt, int>(), "Must be convertible");
+
+struct ExplicitInt {
+ explicit ExplicitInt(int) {}
+};
+static_assert(!test_convertible<ExplicitInt, int>(), "Must not be convertible");
+
+struct ImplicitCopy {
+ ImplicitCopy(ImplicitCopy const&) {}
+};
+static_assert(test_convertible<ImplicitCopy, ImplicitCopy>(), "Must be convertible");
+
+struct ExplicitCopy {
+ explicit ExplicitCopy(ExplicitCopy const&) {}
+};
+static_assert(!test_convertible<ExplicitCopy, ExplicitCopy>(), "Must not be convertible");
+
+struct ImplicitMove {
+ ImplicitMove(ImplicitMove&&) {}
+};
+static_assert(test_convertible<ImplicitMove, ImplicitMove>(), "Must be convertible");
+
+struct ExplicitMove {
+ explicit ExplicitMove(ExplicitMove&&) {}
+};
+static_assert(!test_convertible<ExplicitMove, ExplicitMove>(), "Must not be convertible");
+
+struct ImplicitArgs {
+ ImplicitArgs(int, int, int) {}
+};
+static_assert(test_convertible<ImplicitArgs, int, int, int>(), "Must be convertible");
+
+struct ExplicitArgs {
+ explicit ExplicitArgs(int, int, int) {}
+};
+static_assert(!test_convertible<ExplicitArgs, int, int, int>(), "Must not be convertible");
+
+int main() {
+ // Nothing to do
+}
Added: libcxx/trunk/test/support/test.support/test_macros_header_exceptions.fail.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/test.support/test_macros_header_exceptions.fail.cpp?rev=273382&view=auto
==============================================================================
--- libcxx/trunk/test/support/test.support/test_macros_header_exceptions.fail.cpp (added)
+++ libcxx/trunk/test/support/test.support/test_macros_header_exceptions.fail.cpp Wed Jun 22 00:29:15 2016
@@ -0,0 +1,24 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+// "support/test_macros.hpp"
+
+// #define TEST_HAS_NO_EXCEPTIONS
+
+#include "test_macros.h"
+
+int main() {
+#if defined(TEST_HAS_NO_EXCEPTIONS)
+ try { ((void)0); } catch (...) {} // expected-error {{exceptions disabled}}
+#else
+ try { ((void)0); } catch (...) {}
+#error exceptions enabled
+// expected-error at -1 {{exceptions enabled}}
+#endif
+}
Added: libcxx/trunk/test/support/test.support/test_macros_header_exceptions.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/test.support/test_macros_header_exceptions.pass.cpp?rev=273382&view=auto
==============================================================================
--- libcxx/trunk/test/support/test.support/test_macros_header_exceptions.pass.cpp (added)
+++ libcxx/trunk/test/support/test.support/test_macros_header_exceptions.pass.cpp Wed Jun 22 00:29:15 2016
@@ -0,0 +1,24 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: libcpp-no-exceptions
+
+// "support/test_macros.hpp"
+
+// #define TEST_HAS_NO_EXCEPTIONS
+
+#include "test_macros.h"
+
+#if defined(TEST_HAS_NO_EXCEPTIONS)
+#error macro defined unexpectedly
+#endif
+
+int main() {
+ try { ((void)0); } catch (...) {}
+}
Added: libcxx/trunk/test/support/test.support/test_macros_header_rtti.fail.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/test.support/test_macros_header_rtti.fail.cpp?rev=273382&view=auto
==============================================================================
--- libcxx/trunk/test/support/test.support/test_macros_header_rtti.fail.cpp (added)
+++ libcxx/trunk/test/support/test.support/test_macros_header_rtti.fail.cpp Wed Jun 22 00:29:15 2016
@@ -0,0 +1,29 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+// "support/test_macros.hpp"
+
+// #define TEST_HAS_NO_RTTI
+
+#include "test_macros.h"
+
+struct A { virtual ~A() {} };
+struct B : A {};
+
+int main() {
+#if defined(TEST_HAS_NO_RTTI)
+ A* ptr = new B;
+ (void)dynamic_cast<B*>(ptr); // expected-error{{cannot use dynamic_cast}}
+#else
+ A* ptr = new B;
+ (void)dynamic_cast<B*>(ptr);
+#error RTTI enabled
+// expected-error at -1{{RTTI enabled}}
+#endif
+}
Added: libcxx/trunk/test/support/test.support/test_macros_header_rtti.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/test.support/test_macros_header_rtti.pass.cpp?rev=273382&view=auto
==============================================================================
--- libcxx/trunk/test/support/test.support/test_macros_header_rtti.pass.cpp (added)
+++ libcxx/trunk/test/support/test.support/test_macros_header_rtti.pass.cpp Wed Jun 22 00:29:15 2016
@@ -0,0 +1,28 @@
+//===----------------------------------------------------------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: libcpp-no-rtti
+
+// "support/test_macros.hpp"
+
+// #define TEST_HAS_NO_RTTI
+
+#include "test_macros.h"
+
+#if defined(TEST_HAS_NO_RTTI)
+#error Macro defined unexpectedly
+#endif
+
+struct A { virtual ~A() {} };
+struct B : A {};
+
+int main() {
+ A* ptr = new B;
+ (void)dynamic_cast<B*>(ptr);
+}
Removed: libcxx/trunk/test/support/test_convertible_header.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/test_convertible_header.pass.cpp?rev=273381&view=auto
==============================================================================
--- libcxx/trunk/test/support/test_convertible_header.pass.cpp (original)
+++ libcxx/trunk/test/support/test_convertible_header.pass.cpp (removed)
@@ -1,68 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-// UNSUPPORTED: c++98, c++03
-
-// "support/test_convertible.hpp"
-
-#include "test_convertible.hpp"
-
-struct ImplicitDefault {
- ImplicitDefault() {}
-};
-static_assert(test_convertible<ImplicitDefault>(), "Must be convertible");
-
-struct ExplicitDefault {
- explicit ExplicitDefault() {}
-};
-static_assert(!test_convertible<ExplicitDefault>(), "Must not be convertible");
-
-struct ImplicitInt {
- ImplicitInt(int) {}
-};
-static_assert(test_convertible<ImplicitInt, int>(), "Must be convertible");
-
-struct ExplicitInt {
- explicit ExplicitInt(int) {}
-};
-static_assert(!test_convertible<ExplicitInt, int>(), "Must not be convertible");
-
-struct ImplicitCopy {
- ImplicitCopy(ImplicitCopy const&) {}
-};
-static_assert(test_convertible<ImplicitCopy, ImplicitCopy>(), "Must be convertible");
-
-struct ExplicitCopy {
- explicit ExplicitCopy(ExplicitCopy const&) {}
-};
-static_assert(!test_convertible<ExplicitCopy, ExplicitCopy>(), "Must not be convertible");
-
-struct ImplicitMove {
- ImplicitMove(ImplicitMove&&) {}
-};
-static_assert(test_convertible<ImplicitMove, ImplicitMove>(), "Must be convertible");
-
-struct ExplicitMove {
- explicit ExplicitMove(ExplicitMove&&) {}
-};
-static_assert(!test_convertible<ExplicitMove, ExplicitMove>(), "Must not be convertible");
-
-struct ImplicitArgs {
- ImplicitArgs(int, int, int) {}
-};
-static_assert(test_convertible<ImplicitArgs, int, int, int>(), "Must be convertible");
-
-struct ExplicitArgs {
- explicit ExplicitArgs(int, int, int) {}
-};
-static_assert(!test_convertible<ExplicitArgs, int, int, int>(), "Must not be convertible");
-
-int main() {
- // Nothing to do
-}
More information about the cfe-commits
mailing list