Date: Sat, 11 Feb 2017 13:25:43 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r313638 - in vendor/libc++/dist: docs include src test/std/utilities/optional/optional.bad_optional_access test/std/utilities/variant/variant.visit Message-ID: <201702111325.v1BDPhX9075539@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Sat Feb 11 13:25:42 2017 New Revision: 313638 URL: https://svnweb.freebsd.org/changeset/base/313638 Log: Vendor import of libc++ release_40 branch r294803: https://llvm.org/svn/llvm-project/libcxx/branches/release_40@294803 Modified: vendor/libc++/dist/docs/conf.py vendor/libc++/dist/include/optional vendor/libc++/dist/include/variant vendor/libc++/dist/src/optional.cpp vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp Modified: vendor/libc++/dist/docs/conf.py ============================================================================== --- vendor/libc++/dist/docs/conf.py Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/docs/conf.py Sat Feb 11 13:25:42 2017 (r313638) @@ -47,9 +47,9 @@ copyright = u'2011-2017, LLVM Project' # built documents. # # The short X.Y version. -version = '4.0' +version = '4' # The full version, including alpha/beta/rc tags. -release = '4.0' +release = '4' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. Modified: vendor/libc++/dist/include/optional ============================================================================== --- vendor/libc++/dist/include/optional Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/include/optional Sat Feb 11 13:25:42 2017 (r313638) @@ -160,14 +160,12 @@ namespace std // purposefully not using { class _LIBCPP_EXCEPTION_ABI bad_optional_access - : public logic_error + : public exception { public: - _LIBCPP_INLINE_VISIBILITY - bad_optional_access() : logic_error("bad optional access") {} - // Get the key function ~bad_optional_access() into the dylib virtual ~bad_optional_access() _NOEXCEPT; + virtual const char* what() const _NOEXCEPT; }; } // std Modified: vendor/libc++/dist/include/variant ============================================================================== --- vendor/libc++/dist/include/variant Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/include/variant Sat Feb 11 13:25:42 2017 (r313638) @@ -574,7 +574,7 @@ private: constexpr decltype(auto) operator()(_Alts&&... __alts) const { __std_visit_exhaustive_visitor_check< _Visitor, - decltype(_VSTD::forward<_Alts>(__alts).__value)...>(); + decltype((_VSTD::forward<_Alts>(__alts).__value))...>(); return __invoke_constexpr(_VSTD::forward<_Visitor>(__visitor), _VSTD::forward<_Alts>(__alts).__value...); } Modified: vendor/libc++/dist/src/optional.cpp ============================================================================== --- vendor/libc++/dist/src/optional.cpp Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/src/optional.cpp Sat Feb 11 13:25:42 2017 (r313638) @@ -15,6 +15,10 @@ namespace std bad_optional_access::~bad_optional_access() _NOEXCEPT = default; +const char* bad_optional_access::what() const _NOEXCEPT { + return "bad_optional_access"; + } + } // std _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL Modified: vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/test/std/utilities/optional/optional.bad_optional_access/derive.pass.cpp Sat Feb 11 13:25:42 2017 (r313638) @@ -11,7 +11,7 @@ // <optional> -// class bad_optional_access : public logic_error +// class bad_optional_access : public exception #include <optional> #include <type_traits> @@ -20,6 +20,6 @@ int main() { using std::bad_optional_access; - static_assert(std::is_base_of<std::logic_error, bad_optional_access>::value, ""); - static_assert(std::is_convertible<bad_optional_access*, std::logic_error*>::value, ""); + static_assert(std::is_base_of<std::exception, bad_optional_access>::value, ""); + static_assert(std::is_convertible<bad_optional_access*, std::exception*>::value, ""); } Modified: vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp Sat Feb 11 13:25:39 2017 (r313637) +++ vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp Sat Feb 11 13:25:42 2017 (r313638) @@ -283,9 +283,20 @@ void test_exceptions() { #endif } +// See http://llvm.org/PR31916 +void test_caller_accepts_nonconst() { + struct A {}; + struct Visitor { + void operator()(A&) {} + }; + std::variant<A> v; + std::visit(Visitor{}, v); +} + int main() { test_call_operator_forwarding(); test_argument_forwarding(); test_constexpr(); test_exceptions(); + test_caller_accepts_nonconst(); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201702111325.v1BDPhX9075539>