[libcxx-commits] [PATCH] D103764: [libc++][nfc] Test std::unique_ptr self move assignment.
Mark de Wever via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Sun Jun 6 04:49:16 PDT 2021
Mordante created this revision.
Mordante requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.
The post-conditions for the self move assignment of `std::unique_ptr`
were changed. This requires no implementation changes. A test was added
to validate the new post-conditions.
Addresses
- LWG-3455: Incorrect Postconditions on `unique_ptr` move assignment
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D103764
Files:
libcxx/docs/Cxx2bStatus.rst
libcxx/docs/Cxx2bStatusIssuesStatus.csv
libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move.pass.cpp
Index: libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move.pass.cpp
===================================================================
--- libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move.pass.cpp
+++ libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move.pass.cpp
@@ -8,6 +8,9 @@
// UNSUPPORTED: c++03
+// Self assignement post-conditions are tested.
+// ADDITIONAL_COMPILE_FLAGS: -Wno-self-move
+
// <memory>
// unique_ptr
@@ -72,6 +75,14 @@
assert(d2.state() == 5);
}
assert(A::count == 0);
+ {
+ std::unique_ptr<VT> s(newValue<VT>(expect_alive));
+ A* p = s.get();
+ s = std::move(s);
+ assert(A::count == expect_alive);
+ assert(s.get() == p);
+ }
+ assert(A::count == 0);
}
template <bool IsArray>
Index: libcxx/docs/Cxx2bStatusIssuesStatus.csv
===================================================================
--- libcxx/docs/Cxx2bStatusIssuesStatus.csv
+++ libcxx/docs/Cxx2bStatusIssuesStatus.csv
@@ -36,7 +36,7 @@
"`3448 <https://wg21.link/LWG3448>`__","``transform_view``'s sentinel<false> not comparable with ``iterator<true>``","November 2020","",""
"`3449 <https://wg21.link/LWG3449>`__","take_view and take_while_view's ``sentinel<false>`` not comparable with their const iterator","November 2020","",""
"`3453 <https://wg21.link/LWG3453>`__","Generic code cannot call ``ranges::advance(i, s)``","November 2020","",""
-"`3455 <https://wg21.link/LWG3455>`__","Incorrect Postconditions on ``unique_ptr`` move assignment","November 2020","",""
+"`3455 <https://wg21.link/LWG3455>`__","Incorrect Postconditions on ``unique_ptr`` move assignment","November 2020","|Nothing To Do|",""
"`3460 <https://wg21.link/LWG3460>`__","Unimplementable ``noop_coroutine_handle`` guarantees","November 2020","",""
"`3461 <https://wg21.link/LWG3461>`__","``convertible_to``'s description mishandles cv-qualified void","November 2020","",""
"`3465 <https://wg21.link/LWG3465>`__","compare_partial_order_fallback requires ``F < E``","November 2020","",""
Index: libcxx/docs/Cxx2bStatus.rst
===================================================================
--- libcxx/docs/Cxx2bStatus.rst
+++ libcxx/docs/Cxx2bStatus.rst
@@ -47,4 +47,4 @@
:header-rows: 1
:widths: auto
-Last Updated: 01-Mar-2021
+Last Updated: 6-June-2021
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D103764.350097.patch
Type: text/x-patch
Size: 2378 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20210606/b70a6eb4/attachment.bin>
More information about the libcxx-commits
mailing list