Skip site navigation (1)Skip section navigation (2)
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>