Author: marshall Date: Thu Feb 1 10:45:57 2018 New Revision: 323989 URL: http://llvm.org/viewvc/llvm-project?rev=323989&view=rev Log: Put the exception classes for experimental::optional and experimental::any back in the dylib for binary compatibility
Modified: libcxx/trunk/src/any.cpp libcxx/trunk/src/optional.cpp Modified: libcxx/trunk/src/any.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/any.cpp?rev=323989&r1=323988&r2=323989&view=diff ============================================================================== --- libcxx/trunk/src/any.cpp (original) +++ libcxx/trunk/src/any.cpp Thu Feb 1 10:45:57 2018 @@ -14,3 +14,22 @@ const char* bad_any_cast::what() const _ return "bad any cast"; } } + + +#include <experimental/__config> + +// Preserve std::experimental::any_bad_cast for ABI compatibility +// Even though it no longer exists in a header file +_LIBCPP_BEGIN_NAMESPACE_LFTS + +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ANY_CAST bad_any_cast : public bad_cast +{ +public: + virtual const char* what() const _NOEXCEPT; +}; + +const char* bad_any_cast::what() const _NOEXCEPT { + return "bad any cast"; +} + +_LIBCPP_END_NAMESPACE_LFTS Modified: libcxx/trunk/src/optional.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/optional.cpp?rev=323989&r1=323988&r2=323989&view=diff ============================================================================== --- libcxx/trunk/src/optional.cpp (original) +++ libcxx/trunk/src/optional.cpp Thu Feb 1 10:45:57 2018 @@ -20,3 +20,23 @@ const char* bad_optional_access::what() } // std + +#include <experimental/__config> + +// Preserve std::experimental::bad_optional_access for ABI compatibility +// Even though it no longer exists in a header file +_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL + +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access + : public std::logic_error +{ +public: + bad_optional_access() : std::logic_error("Bad optional Access") {} + +// Get the key function ~bad_optional_access() into the dylib + virtual ~bad_optional_access() _NOEXCEPT; +}; + +bad_optional_access::~bad_optional_access() _NOEXCEPT = default; + +_LIBCPP_END_NAMESPACE_EXPERIMENTAL _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits