[libcxx-commits] [PATCH] D111925: [libc++][NFC] Mark LWG3573 as complete
Joe Loser via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Sat Oct 16 16:12:12 PDT 2021
jloser updated this revision to Diff 380221.
jloser added a comment.
Guard with TEST_HAS_NO_EXCEPTIONS
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D111925/new/
https://reviews.llvm.org/D111925
Files:
libcxx/docs/Status/Cxx2bIssues.csv
libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
Index: libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
===================================================================
--- libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
+++ libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp
@@ -16,6 +16,7 @@
#include <string_view>
#include <cassert>
+#include <iterator>
#include <ranges>
#include "make_string.h"
@@ -43,6 +44,36 @@
return true;
}
+#ifndef TEST_HAS_NO_EXCEPTIONS
+template<class CharT>
+struct ThrowingSentinel {
+ friend bool operator==(const CharT*, ThrowingSentinel) noexcept;
+ friend std::iter_difference_t<const CharT*> operator-(const CharT*, ThrowingSentinel) noexcept;
+ friend std::iter_difference_t<const CharT*> operator-(ThrowingSentinel, const CharT*) { throw 42; }
+};
+
+template <class CharT>
+void test_throwing() {
+ auto val = MAKE_STRING_VIEW(CharT, "test");
+ try {
+ (void)std::basic_string_view<CharT>(val.begin(), ThrowingSentinel<CharT>());
+ assert(false);
+ } catch (int i) {
+ assert(i == 42);
+ }
+}
+
+void test_throwing() {
+ test_throwing<char>();
+#ifndef TEST_HAS_NO_WIDE_CHARACTERS
+ test_throwing<wchar_t>();
+#endif
+ test_throwing<char8_t>();
+ test_throwing<char16_t>();
+ test_throwing<char32_t>();
+}
+#endif
+
static_assert( std::is_constructible_v<std::string_view, const char*, char*>);
static_assert( std::is_constructible_v<std::string_view, char*, const char*>);
static_assert(!std::is_constructible_v<std::string_view, char*, void*>); // not a sentinel
@@ -54,6 +85,10 @@
test();
static_assert(test());
+#ifndef TEST_HAS_NO_EXCEPTIONS
+ test_throwing();
+#endif
+
return 0;
}
Index: libcxx/docs/Status/Cxx2bIssues.csv
===================================================================
--- libcxx/docs/Status/Cxx2bIssues.csv
+++ libcxx/docs/Status/Cxx2bIssues.csv
@@ -125,7 +125,7 @@
`3570 <https://wg21.link/LWG3570>`__,"``basic_osyncstream::emit`` should be an unformatted output function","October 2021","",""
`3571 <https://wg21.link/LWG3571>`__,"``flush_emit`` should set ``badbit`` if the ``emit`` call fails","October 2021","",""
`3572 <https://wg21.link/LWG3572>`__,"``copyable-box`` should be fully ``constexpr``","October 2021","",""
-`3573 <https://wg21.link/LWG3573>`__,"Missing Throws element for ``basic_string_view(It begin, End end)``","October 2021","",""
+`3573 <https://wg21.link/LWG3573>`__,"Missing Throws element for ``basic_string_view(It begin, End end)``","October 2021","|Complete|","14.0"
`3574 <https://wg21.link/LWG3574>`__,"``common_iterator`` should be completely ``constexpr``-able","October 2021","",""
`3580 <https://wg21.link/LWG3580>`__,"``iota_view``'s ``iterator``'s binary ``operator+`` should be improved","October 2021","",""
`3581 <https://wg21.link/LWG3581>`__,"The range constructor makes ``basic_string_view`` not trivially move constructible","October 2021","",""
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D111925.380221.patch
Type: text/x-patch
Size: 2997 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20211016/b432956a/attachment.bin>
More information about the libcxx-commits
mailing list