[PATCH] D27310: Handle tests for noexcept that expect a false value

2016-12-05 Thread Roger Ferrer Ibanez via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL288660: Handle tests for noexcept that expect a false value 
(authored by rogfer01).

Changed prior to commit:
  https://reviews.llvm.org/D27310?vs=80238&id=80242#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D27310

Files:
  libcxx/trunk/test/libcxx/strings/iterators.exceptions.pass.cpp


Index: libcxx/trunk/test/libcxx/strings/iterators.exceptions.pass.cpp
===
--- libcxx/trunk/test/libcxx/strings/iterators.exceptions.pass.cpp
+++ libcxx/trunk/test/libcxx/strings/iterators.exceptions.pass.cpp
@@ -7,7 +7,6 @@
 //
 
//===--===//
 //
-// XFAIL: libcpp-no-exceptions
 // 
 
 // __libcpp_is_trivial_iterator
@@ -26,6 +25,15 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
+#ifndef TEST_HAS_NO_EXCEPTIONS
+static const bool expected = false;
+#else
+// Under libcpp-no-exceptions all noexcept expressions are trivially true, so
+// any check for a noexcept returning false must actually check for it being
+// true.
+static const bool expected = true;
+#endif
+
 int main()
 {
 //  basic tests
@@ -43,17 +51,17 @@
 static_assert(( 
std::__libcpp_string_gets_noexcept_iterator > > ::value), "");
 
 //  iterators in the libc++ test suite
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 
 #if TEST_STD_VER >= 11
 static_assert(( 
std::__libcpp_string_gets_noexcept_iterator 
>::value), "");
 #else
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 #endif
 
 //


Index: libcxx/trunk/test/libcxx/strings/iterators.exceptions.pass.cpp
===
--- libcxx/trunk/test/libcxx/strings/iterators.exceptions.pass.cpp
+++ libcxx/trunk/test/libcxx/strings/iterators.exceptions.pass.cpp
@@ -7,7 +7,6 @@
 //
 //===--===//
 //
-// XFAIL: libcpp-no-exceptions
 // 
 
 // __libcpp_is_trivial_iterator
@@ -26,6 +25,15 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
+#ifndef TEST_HAS_NO_EXCEPTIONS
+static const bool expected = false;
+#else
+// Under libcpp-no-exceptions all noexcept expressions are trivially true, so
+// any check for a noexcept returning false must actually check for it being
+// true.
+static const bool expected = true;
+#endif
+
 int main()
 {
 //  basic tests
@@ -43,17 +51,17 @@
 static_assert(( std::__libcpp_string_gets_noexcept_iterator > > ::value), "");
 
 //  iterators in the libc++ test suite
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 
 #if TEST_STD_VER >= 11
 static_assert(( std::__libcpp_string_gets_noexcept_iterator >::value), "");
 #else
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterato

[PATCH] D27310: Handle tests for noexcept that expect a false value

2016-12-05 Thread Roger Ferrer Ibanez via Phabricator via cfe-commits
rogfer01 updated this revision to Diff 80238.
rogfer01 added a comment.

Do not use constexpr.


https://reviews.llvm.org/D27310

Files:
  test/libcxx/strings/iterators.exceptions.pass.cpp


Index: test/libcxx/strings/iterators.exceptions.pass.cpp
===
--- test/libcxx/strings/iterators.exceptions.pass.cpp
+++ test/libcxx/strings/iterators.exceptions.pass.cpp
@@ -7,7 +7,6 @@
 //
 
//===--===//
 //
-// XFAIL: libcpp-no-exceptions
 // 
 
 // __libcpp_is_trivial_iterator
@@ -26,6 +25,15 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
+#ifndef TEST_HAS_NO_EXCEPTIONS
+static const bool expected = false;
+#else
+// Under libcpp-no-exceptions all noexcept expressions are trivially true, so
+// any check for a noexcept returning false must actually check for it being
+// true.
+static const bool expected = true;
+#endif
+
 int main()
 {
 //  basic tests
@@ -43,17 +51,17 @@
 static_assert(( 
std::__libcpp_string_gets_noexcept_iterator > > ::value), "");
 
 //  iterators in the libc++ test suite
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 
 #if TEST_STD_VER >= 11
 static_assert(( 
std::__libcpp_string_gets_noexcept_iterator 
>::value), "");
 #else
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 #endif
 
 //


Index: test/libcxx/strings/iterators.exceptions.pass.cpp
===
--- test/libcxx/strings/iterators.exceptions.pass.cpp
+++ test/libcxx/strings/iterators.exceptions.pass.cpp
@@ -7,7 +7,6 @@
 //
 //===--===//
 //
-// XFAIL: libcpp-no-exceptions
 // 
 
 // __libcpp_is_trivial_iterator
@@ -26,6 +25,15 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
+#ifndef TEST_HAS_NO_EXCEPTIONS
+static const bool expected = false;
+#else
+// Under libcpp-no-exceptions all noexcept expressions are trivially true, so
+// any check for a noexcept returning false must actually check for it being
+// true.
+static const bool expected = true;
+#endif
+
 int main()
 {
 //  basic tests
@@ -43,17 +51,17 @@
 static_assert(( std::__libcpp_string_gets_noexcept_iterator > > ::value), "");
 
 //  iterators in the libc++ test suite
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 
 #if TEST_STD_VER >= 11
 static_assert(( std::__libcpp_string_gets_noexcept_iterator >::value), "");
 #else
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 #endif
 
 //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27310: Handle tests for noexcept that expect a false value

2016-12-05 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF added inline comments.



Comment at: test/libcxx/strings/iterators.exceptions.pass.cpp:29
+#ifndef TEST_HAS_NO_EXCEPTIONS
+constexpr bool expected = false;
+#else

rogfer01 wrote:
> EricWF wrote:
> > We can't use constexpr because these tests run in C++03. However `const 
> > bool expected = ...` should give you a value you can use in constant 
> > expressions.
> Ah, I was confused by the usage of C++11 headers in this file but I will use 
> a `static const bool` instead. Thanks.
No worries. It is super confusing, especially since we can use `static_assert` 
but not `constexpr`. Libc++ goes out of its way to provide as much C++11 in 
C++03 as possible, but there are weird limitations.


https://reviews.llvm.org/D27310



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27310: Handle tests for noexcept that expect a false value

2016-12-05 Thread Roger Ferrer Ibanez via Phabricator via cfe-commits
rogfer01 added inline comments.



Comment at: test/libcxx/strings/iterators.exceptions.pass.cpp:29
+#ifndef TEST_HAS_NO_EXCEPTIONS
+constexpr bool expected = false;
+#else

EricWF wrote:
> We can't use constexpr because these tests run in C++03. However `const bool 
> expected = ...` should give you a value you can use in constant expressions.
Ah, I was confused by the usage of C++11 headers in this file but I will use a 
`static const bool` instead. Thanks.


https://reviews.llvm.org/D27310



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27310: Handle tests for noexcept that expect a false value

2016-12-05 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF added a comment.

Please address the inline comments before committing.




Comment at: test/libcxx/strings/iterators.exceptions.pass.cpp:29
+#ifndef TEST_HAS_NO_EXCEPTIONS
+constexpr bool expected = false;
+#else

We can't use constexpr because these tests run in C++03. However `const bool 
expected = ...` should give you a value you can use in constant expressions.


https://reviews.llvm.org/D27310



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27310: Handle tests for noexcept that expect a false value

2016-12-05 Thread Roger Ferrer Ibanez via Phabricator via cfe-commits
rogfer01 updated this revision to Diff 80235.
rogfer01 added a comment.

- Rewrite the adjusted tests in the way suggested by @EricWF
- Also check that this test works in a GCC-built libcxx


https://reviews.llvm.org/D27310

Files:
  test/libcxx/strings/iterators.exceptions.pass.cpp


Index: test/libcxx/strings/iterators.exceptions.pass.cpp
===
--- test/libcxx/strings/iterators.exceptions.pass.cpp
+++ test/libcxx/strings/iterators.exceptions.pass.cpp
@@ -7,7 +7,6 @@
 //
 
//===--===//
 //
-// XFAIL: libcpp-no-exceptions
 // 
 
 // __libcpp_is_trivial_iterator
@@ -26,6 +25,15 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
+#ifndef TEST_HAS_NO_EXCEPTIONS
+constexpr bool expected = false;
+#else
+// Under libcpp-no-exceptions all noexcept expressions are trivially true, so
+// any check for a noexcept returning false must actually check for it being
+// true.
+constexpr bool expected = true;
+#endif
+
 int main()
 {
 //  basic tests
@@ -43,17 +51,17 @@
 static_assert(( 
std::__libcpp_string_gets_noexcept_iterator > > ::value), "");
 
 //  iterators in the libc++ test suite
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 
 #if TEST_STD_VER >= 11
 static_assert(( 
std::__libcpp_string_gets_noexcept_iterator 
>::value), "");
 #else
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 #endif
 
 //


Index: test/libcxx/strings/iterators.exceptions.pass.cpp
===
--- test/libcxx/strings/iterators.exceptions.pass.cpp
+++ test/libcxx/strings/iterators.exceptions.pass.cpp
@@ -7,7 +7,6 @@
 //
 //===--===//
 //
-// XFAIL: libcpp-no-exceptions
 // 
 
 // __libcpp_is_trivial_iterator
@@ -26,6 +25,15 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
+#ifndef TEST_HAS_NO_EXCEPTIONS
+constexpr bool expected = false;
+#else
+// Under libcpp-no-exceptions all noexcept expressions are trivially true, so
+// any check for a noexcept returning false must actually check for it being
+// true.
+constexpr bool expected = true;
+#endif
+
 int main()
 {
 //  basic tests
@@ -43,17 +51,17 @@
 static_assert(( std::__libcpp_string_gets_noexcept_iterator > > ::value), "");
 
 //  iterators in the libc++ test suite
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 
 #if TEST_STD_VER >= 11
 static_assert(( std::__libcpp_string_gets_noexcept_iterator >::value), "");
 #else
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(std::__libcpp_string_gets_noexcept_iterator >::value == expected, "");
 #endif
 
 //
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-c

[PATCH] D27310: Handle tests for noexcept that expect a false value

2016-12-02 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF accepted this revision.
EricWF added a comment.
This revision is now accepted and ready to land.

Have you tested this against GCC which has different noexcept semantics?

If so this LGTM minus possibly addressing the inline comments.




Comment at: test/libcxx/strings/iterators.exceptions.pass.cpp:55
 
 //  iterators in the libc++ test suite
+
static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");

I would prefer something like this if possible:

```
#ifndef TEST_HAS_NO_EXCEPTIONS
static const bool expect = false;
#else
static const bool expect = true;
#endif
static_assert(std::__libcpp_string_gets_noexcept_iterator<...>::value == 
expect);
```

(Also the double negation of `TEST_FOR_FALSE(!foo)` is weird)


https://reviews.llvm.org/D27310



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D27310: Handle tests for noexcept that expect a false value

2016-12-01 Thread Roger Ferrer Ibanez via Phabricator via cfe-commits
rogfer01 created this revision.
rogfer01 added reviewers: EricWF, mclow.lists, rmaprath.
rogfer01 added a subscriber: cfe-commits.

Under libcpp-no-exceptions, noexcept is trivially true. Some tests expect in 
the usual setting to return false. Wrap these tests in a convenience macro.


https://reviews.llvm.org/D27310

Files:
  test/libcxx/strings/iterators.exceptions.pass.cpp


Index: test/libcxx/strings/iterators.exceptions.pass.cpp
===
--- test/libcxx/strings/iterators.exceptions.pass.cpp
+++ test/libcxx/strings/iterators.exceptions.pass.cpp
@@ -7,7 +7,6 @@
 //
 
//===--===//
 //
-// XFAIL: libcpp-no-exceptions
 // 
 
 // __libcpp_is_trivial_iterator
@@ -26,6 +25,17 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
+#ifndef TEST_HAS_NO_EXCEPTIONS
+// Wrapper for tests that expect a false noexcept. Usually a no-op but
+// see comment after #else.
+#define TEST_FOR_FALSE(x) (x)
+#else
+// Under libcpp-no-exceptions all noexcept expressions are trivially true, so
+// any check for a noexcept returning false must actually check for it being
+// true, so we negate the result.
+#define TEST_FOR_FALSE(x) (!(x))
+#endif
+
 int main()
 {
 //  basic tests
@@ -43,17 +53,17 @@
 static_assert(( 
std::__libcpp_string_gets_noexcept_iterator > > ::value), "");
 
 //  iterators in the libc++ test suite
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
 
 #if TEST_STD_VER >= 11
 static_assert(( 
std::__libcpp_string_gets_noexcept_iterator 
>::value), "");
 #else
-
static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+
static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
 #endif
 
 //


Index: test/libcxx/strings/iterators.exceptions.pass.cpp
===
--- test/libcxx/strings/iterators.exceptions.pass.cpp
+++ test/libcxx/strings/iterators.exceptions.pass.cpp
@@ -7,7 +7,6 @@
 //
 //===--===//
 //
-// XFAIL: libcpp-no-exceptions
 // 
 
 // __libcpp_is_trivial_iterator
@@ -26,6 +25,17 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
+#ifndef TEST_HAS_NO_EXCEPTIONS
+// Wrapper for tests that expect a false noexcept. Usually a no-op but
+// see comment after #else.
+#define TEST_FOR_FALSE(x) (x)
+#else
+// Under libcpp-no-exceptions all noexcept expressions are trivially true, so
+// any check for a noexcept returning false must actually check for it being
+// true, so we negate the result.
+#define TEST_FOR_FALSE(x) (!(x))
+#endif
+
 int main()
 {
 //  basic tests
@@ -43,17 +53,17 @@
 static_assert(( std::__libcpp_string_gets_noexcept_iterator > > ::value), "");
 
 //  iterators in the libc++ test suite
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
-static_assert((!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
+static_assert(TEST_FOR_FALSE(!std::__libcpp_string_gets_noexcept_iterator >::value), "");
 
 #if TEST_STD_VER >= 11
 static_