Author: dexonsmith Date: Sun Jun 18 09:52:26 2017 New Revision: 305647 URL: http://llvm.org/viewvc/llvm-project?rev=305647&view=rev Log: any: Add availability for experimental::bad_any_cast
As a follow up to r302172, add missing availability for bad_any_cast. rdar://problem/32161524 Modified: libcxx/trunk/include/__config libcxx/trunk/include/experimental/any libcxx/trunk/test/std/experimental/any/any.class/any.assign/copy.pass.cpp libcxx/trunk/test/std/experimental/any/any.class/any.assign/move.pass.cpp libcxx/trunk/test/std/experimental/any/any.class/any.assign/value.pass.cpp libcxx/trunk/test/std/experimental/any/any.class/any.cons/copy.pass.cpp libcxx/trunk/test/std/experimental/any/any.class/any.cons/move.pass.cpp libcxx/trunk/test/std/experimental/any/any.class/any.cons/value.pass.cpp libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp libcxx/trunk/test/support/experimental_any_helpers.h Modified: libcxx/trunk/include/__config URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/include/__config (original) +++ libcxx/trunk/include/__config Sun Jun 18 09:52:26 2017 @@ -1154,6 +1154,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit __attribute__((availability(watchos,strict,introduced=3.0))) #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable)) #define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH __attribute__((unavailable)) +#define _LIBCPP_AVAILABILITY_BAD_ANY_CAST __attribute__((unavailable)) #define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ __attribute__((availability(macosx,strict,introduced=10.12))) \ __attribute__((availability(ios,strict,introduced=10.0))) \ @@ -1179,6 +1180,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit #define _LIBCPP_AVAILABILITY_SHARED_MUTEX #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS #define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH +#define _LIBCPP_AVAILABILITY_BAD_ANY_CAST #define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS #define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE #define _LIBCPP_AVAILABILITY_FUTURE_ERROR @@ -1191,9 +1193,12 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit #ifdef _LIBCPP_NO_EXCEPTIONS #define _LIBCPP_AVAILABILITY_DYNARRAY #define _LIBCPP_AVAILABILITY_FUTURE +#define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST #else #define _LIBCPP_AVAILABILITY_DYNARRAY _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH #define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR +#define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST \ + _LIBCPP_AVAILABILITY_BAD_ANY_CAST #endif // Availability of stream API in the dylib got dropped and re-added. The Modified: libcxx/trunk/include/experimental/any URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/experimental/any?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/include/experimental/any (original) +++ libcxx/trunk/include/experimental/any Sun Jun 18 09:52:26 2017 @@ -89,7 +89,7 @@ inline namespace fundamentals_v1 { _LIBCPP_BEGIN_NAMESPACE_LFTS -class _LIBCPP_EXCEPTION_ABI bad_any_cast : public bad_cast +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ANY_CAST bad_any_cast : public bad_cast { public: virtual const char* what() const _NOEXCEPT; @@ -98,6 +98,7 @@ public: #if _LIBCPP_STD_VER > 11 // C++ > 11 _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE +_LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST void __throw_bad_any_cast() { #ifndef _LIBCPP_NO_EXCEPTIONS @@ -506,7 +507,7 @@ void swap(any & __lhs, any & __rhs) _NOE } template <class _ValueType> -_LIBCPP_INLINE_VISIBILITY +_LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any const & __v) { static_assert( @@ -522,7 +523,7 @@ _ValueType any_cast(any const & __v) } template <class _ValueType> -_LIBCPP_INLINE_VISIBILITY +_LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any & __v) { static_assert( @@ -537,7 +538,7 @@ _ValueType any_cast(any & __v) } template <class _ValueType> -_LIBCPP_INLINE_VISIBILITY +_LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any && __v) { static_assert( Modified: libcxx/trunk/test/std/experimental/any/any.class/any.assign/copy.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/any/any.class/any.assign/copy.pass.cpp?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/any/any.class/any.assign/copy.pass.cpp (original) +++ libcxx/trunk/test/std/experimental/any/any.class/any.assign/copy.pass.cpp Sun Jun 18 09:52:26 2017 @@ -9,12 +9,7 @@ // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: with_system_cxx_lib=macosx10.12 -// XFAIL: with_system_cxx_lib=macosx10.11 -// XFAIL: with_system_cxx_lib=macosx10.10 -// XFAIL: with_system_cxx_lib=macosx10.9 -// XFAIL: with_system_cxx_lib=macosx10.7 -// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: availability=macosx // <experimental/any> Modified: libcxx/trunk/test/std/experimental/any/any.class/any.assign/move.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/any/any.class/any.assign/move.pass.cpp?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/any/any.class/any.assign/move.pass.cpp (original) +++ libcxx/trunk/test/std/experimental/any/any.class/any.assign/move.pass.cpp Sun Jun 18 09:52:26 2017 @@ -9,12 +9,7 @@ // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: with_system_cxx_lib=macosx10.12 -// XFAIL: with_system_cxx_lib=macosx10.11 -// XFAIL: with_system_cxx_lib=macosx10.10 -// XFAIL: with_system_cxx_lib=macosx10.9 -// XFAIL: with_system_cxx_lib=macosx10.7 -// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: availability=macosx // <experimental/any> Modified: libcxx/trunk/test/std/experimental/any/any.class/any.assign/value.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/any/any.class/any.assign/value.pass.cpp?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/any/any.class/any.assign/value.pass.cpp (original) +++ libcxx/trunk/test/std/experimental/any/any.class/any.assign/value.pass.cpp Sun Jun 18 09:52:26 2017 @@ -9,12 +9,7 @@ // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: with_system_cxx_lib=macosx10.12 -// XFAIL: with_system_cxx_lib=macosx10.11 -// XFAIL: with_system_cxx_lib=macosx10.10 -// XFAIL: with_system_cxx_lib=macosx10.9 -// XFAIL: with_system_cxx_lib=macosx10.7 -// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: availability=macosx // <experimental/any> Modified: libcxx/trunk/test/std/experimental/any/any.class/any.cons/copy.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/any/any.class/any.cons/copy.pass.cpp?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/any/any.class/any.cons/copy.pass.cpp (original) +++ libcxx/trunk/test/std/experimental/any/any.class/any.cons/copy.pass.cpp Sun Jun 18 09:52:26 2017 @@ -9,12 +9,7 @@ // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: with_system_cxx_lib=macosx10.12 -// XFAIL: with_system_cxx_lib=macosx10.11 -// XFAIL: with_system_cxx_lib=macosx10.10 -// XFAIL: with_system_cxx_lib=macosx10.9 -// XFAIL: with_system_cxx_lib=macosx10.7 -// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: availability=macosx // <experimental/any> Modified: libcxx/trunk/test/std/experimental/any/any.class/any.cons/move.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/any/any.class/any.cons/move.pass.cpp?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/any/any.class/any.cons/move.pass.cpp (original) +++ libcxx/trunk/test/std/experimental/any/any.class/any.cons/move.pass.cpp Sun Jun 18 09:52:26 2017 @@ -9,12 +9,7 @@ // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: with_system_cxx_lib=macosx10.12 -// XFAIL: with_system_cxx_lib=macosx10.11 -// XFAIL: with_system_cxx_lib=macosx10.10 -// XFAIL: with_system_cxx_lib=macosx10.9 -// XFAIL: with_system_cxx_lib=macosx10.7 -// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: availability=macosx // <experimental/any> Modified: libcxx/trunk/test/std/experimental/any/any.class/any.cons/value.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/any/any.class/any.cons/value.pass.cpp?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/any/any.class/any.cons/value.pass.cpp (original) +++ libcxx/trunk/test/std/experimental/any/any.class/any.cons/value.pass.cpp Sun Jun 18 09:52:26 2017 @@ -9,12 +9,7 @@ // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: with_system_cxx_lib=macosx10.12 -// XFAIL: with_system_cxx_lib=macosx10.11 -// XFAIL: with_system_cxx_lib=macosx10.10 -// XFAIL: with_system_cxx_lib=macosx10.9 -// XFAIL: with_system_cxx_lib=macosx10.7 -// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: availability=macosx // <experimental/any> Modified: libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp (original) +++ libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp Sun Jun 18 09:52:26 2017 @@ -9,12 +9,7 @@ // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: with_system_cxx_lib=macosx10.12 -// XFAIL: with_system_cxx_lib=macosx10.11 -// XFAIL: with_system_cxx_lib=macosx10.10 -// XFAIL: with_system_cxx_lib=macosx10.9 -// XFAIL: with_system_cxx_lib=macosx10.7 -// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: availability=macosx // <experimental/any> Modified: libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp (original) +++ libcxx/trunk/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp Sun Jun 18 09:52:26 2017 @@ -9,12 +9,7 @@ // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: with_system_cxx_lib=macosx10.12 -// XFAIL: with_system_cxx_lib=macosx10.11 -// XFAIL: with_system_cxx_lib=macosx10.10 -// XFAIL: with_system_cxx_lib=macosx10.9 -// XFAIL: with_system_cxx_lib=macosx10.7 -// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: availability=macosx // <experimental/any> Modified: libcxx/trunk/test/support/experimental_any_helpers.h URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/experimental_any_helpers.h?rev=305647&r1=305646&r2=305647&view=diff ============================================================================== --- libcxx/trunk/test/support/experimental_any_helpers.h (original) +++ libcxx/trunk/test/support/experimental_any_helpers.h Sun Jun 18 09:52:26 2017 @@ -55,6 +55,7 @@ void assertEmpty(std::experimental::any // Assert that an 'any' object stores the specified 'Type' and 'value'. template <class Type> +_LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST void assertContains(std::experimental::any const& a, int value = 1) { assert(!a.empty()); RTTI_ASSERT(a.type() == typeid(Type)); @@ -64,6 +65,7 @@ void assertContains(std::experimental::a // Modify the value of a "test type" stored within an any to the specified // 'value'. template <class Type> +_LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST void modifyValue(std::experimental::any& a, int value) { assert(!a.empty()); RTTI_ASSERT(a.type() == typeid(Type)); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits