STL_MSFT created this revision.
STL_MSFT added reviewers: EricWF, mclow.lists.
STL_MSFT added a subscriber: cfe-commits.

[libcxx] [test] Add LIBCPP_ASSERT_NOEXCEPT/LIBCPP_ASSERT_NOT_NOEXCEPT, remove 
an unused variable.

test/support/test_macros.h
For convenience/greppability, add macros for libcxx-specific static_asserts 
about noexceptness.

(Moving the definitions of ASSERT_NOEXCEPT/ASSERT_NOT_NOEXCEPT isn't 
technically necessary
because they're macros, but I think it's better style to define stuff before 
using it.)

test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp
There was a completely unused `TrackedCallable obj;`.

apply() isn't depicted with conditional noexcept in C++17.

test/std/utilities/tuple/tuple.tuple/tuple.apply/make_from_tuple.pass.cpp
Now that we have LIBCPP_ASSERT_NOEXCEPT, use it.


https://reviews.llvm.org/D27622

Files:
  test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp
  test/std/utilities/tuple/tuple.tuple/tuple.apply/make_from_tuple.pass.cpp
  test/support/test_macros.h

Index: test/support/test_macros.h
===================================================================
--- test/support/test_macros.h
+++ test/support/test_macros.h
@@ -128,23 +128,27 @@
 #define TEST_NORETURN [[noreturn]]
 #endif
 
+#define ASSERT_NOEXCEPT(...) \
+    static_assert(noexcept(__VA_ARGS__), "Operation must be noexcept")
+
+#define ASSERT_NOT_NOEXCEPT(...) \
+    static_assert(!noexcept(__VA_ARGS__), "Operation must NOT be noexcept")
+
 /* Macros for testing libc++ specific behavior and extensions */
 #if defined(_LIBCPP_VERSION)
 #define LIBCPP_ASSERT(...) assert(__VA_ARGS__)
 #define LIBCPP_STATIC_ASSERT(...) static_assert(__VA_ARGS__)
+#define LIBCPP_ASSERT_NOEXCEPT(...) ASSERT_NOEXCEPT(__VA_ARGS__)
+#define LIBCPP_ASSERT_NOT_NOEXCEPT(...) ASSERT_NOT_NOEXCEPT(__VA_ARGS__)
 #define LIBCPP_ONLY(...) __VA_ARGS__
 #else
 #define LIBCPP_ASSERT(...) ((void)0)
 #define LIBCPP_STATIC_ASSERT(...) ((void)0)
+#define LIBCPP_ASSERT_NOEXCEPT(...) ((void)0)
+#define LIBCPP_ASSERT_NOT_NOEXCEPT(...) ((void)0)
 #define LIBCPP_ONLY(...) ((void)0)
 #endif
 
-#define ASSERT_NOEXCEPT(...) \
-    static_assert(noexcept(__VA_ARGS__), "Operation must be noexcept")
-
-#define ASSERT_NOT_NOEXCEPT(...) \
-    static_assert(!noexcept(__VA_ARGS__), "Operation must NOT be noexcept")
-
 namespace test_macros_detail {
 template <class T, class U>
 struct is_same { enum { value = 0};} ;
Index: test/std/utilities/tuple/tuple.tuple/tuple.apply/make_from_tuple.pass.cpp
===================================================================
--- test/std/utilities/tuple/tuple.tuple/tuple.apply/make_from_tuple.pass.cpp
+++ test/std/utilities/tuple/tuple.tuple/tuple.apply/make_from_tuple.pass.cpp
@@ -175,14 +175,14 @@
         Tuple tup; ((void)tup);
         Tuple const& ctup = tup; ((void)ctup);
         ASSERT_NOT_NOEXCEPT(std::make_from_tuple<TestType>(ctup));
-        LIBCPP_ONLY(ASSERT_NOEXCEPT(std::make_from_tuple<TestType>(std::move(tup))));
+        LIBCPP_ASSERT_NOEXCEPT(std::make_from_tuple<TestType>(std::move(tup)));
     }
     {
         using Tuple = std::pair<int, NothrowMoveable>;
         Tuple tup; ((void)tup);
         Tuple const& ctup = tup; ((void)ctup);
         ASSERT_NOT_NOEXCEPT(std::make_from_tuple<TestType>(ctup));
-        LIBCPP_ONLY(ASSERT_NOEXCEPT(std::make_from_tuple<TestType>(std::move(tup))));
+        LIBCPP_ASSERT_NOEXCEPT(std::make_from_tuple<TestType>(std::move(tup)));
     }
     {
         using Tuple = std::tuple<int, int, int>;
@@ -192,7 +192,7 @@
     {
         using Tuple = std::tuple<long, long, long>;
         Tuple tup; ((void)tup);
-        LIBCPP_ONLY(ASSERT_NOEXCEPT(std::make_from_tuple<TestType>(tup)));
+        LIBCPP_ASSERT_NOEXCEPT(std::make_from_tuple<TestType>(tup));
     }
     {
         using Tuple = std::array<int, 3>;
@@ -202,7 +202,7 @@
     {
         using Tuple = std::array<long, 3>;
         Tuple tup; ((void)tup);
-        LIBCPP_ONLY(ASSERT_NOEXCEPT(std::make_from_tuple<TestType>(tup)));
+        LIBCPP_ASSERT_NOEXCEPT(std::make_from_tuple<TestType>(tup));
     }
 }
 
Index: test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp
===================================================================
--- test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp
+++ test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp
@@ -166,7 +166,6 @@
 
 void test_call_quals_and_arg_types()
 {
-    TrackedCallable obj;
     using Tup = std::tuple<int, int const&, unsigned&&>;
     const int x = 42;
     unsigned y = 101;
@@ -199,15 +198,15 @@
         // test that the functions noexcept-ness is propagated
         using Tup = std::tuple<int, const char*, long>;
         Tup t;
-        ASSERT_NOEXCEPT(std::apply(nec, t));
+        LIBCPP_ASSERT_NOEXCEPT(std::apply(nec, t));
         ASSERT_NOT_NOEXCEPT(std::apply(tc, t));
     }
     {
         // test that the noexcept-ness of the argument conversions is checked.
         using Tup = std::tuple<NothrowMoveable, int>;
         Tup t;
         ASSERT_NOT_NOEXCEPT(std::apply(nec, t));
-        ASSERT_NOEXCEPT(std::apply(nec, std::move(t)));
+        LIBCPP_ASSERT_NOEXCEPT(std::apply(nec, std::move(t)));
     }
 }
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to