From e9c66ad9fa9f1c1138c2a4868610e1d77271216c Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Thu, 4 May 2017 17:08:54 +0000 Subject: Add markup for libc++ dylib availability Libc++ is used as a system library on macOS and iOS (amongst others). In order for users to be able to compile a binary that is intended to be deployed to an older version of the platform, clang provides the availability attribute _ that can be placed on declarations to describe the lifecycle of a symbol in the library. See docs/DesignDocs/AvailabilityMarkup.rst for more information. Differential Revision: https://reviews.llvm.org/D31739 llvm-svn: 302172 --- .../test/std/experimental/any/any.class/any.assign/copy.pass.cpp | 7 +++++++ .../test/std/experimental/any/any.class/any.assign/move.pass.cpp | 7 +++++++ .../std/experimental/any/any.class/any.assign/value.pass.cpp | 9 ++++++++- .../test/std/experimental/any/any.class/any.cons/copy.pass.cpp | 7 +++++++ .../test/std/experimental/any/any.class/any.cons/move.pass.cpp | 7 +++++++ .../test/std/experimental/any/any.class/any.cons/value.pass.cpp | 9 ++++++++- .../std/experimental/any/any.class/any.modifiers/clear.pass.cpp | 7 +++++++ .../std/experimental/any/any.class/any.modifiers/swap.pass.cpp | 7 +++++++ .../any/any.nonmembers/any.cast/any_cast_reference.pass.cpp | 2 ++ .../any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp | 2 +- libcxx/test/std/experimental/any/any.nonmembers/swap.pass.cpp | 5 +++-- .../optional/optional.bad_optional_access/default.pass.cpp | 6 ++++++ .../optional/optional.bad_optional_access/derive.pass.cpp | 6 ++++++ .../optional.object/optional.object.observe/value.pass.cpp | 7 +++++++ .../optional.object/optional.object.observe/value_const.pass.cpp | 7 +++++++ 15 files changed, 90 insertions(+), 5 deletions(-) (limited to 'libcxx/test/std/experimental') diff --git a/libcxx/test/std/experimental/any/any.class/any.assign/copy.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.assign/copy.pass.cpp index 17b01fe630b..7140fab88fe 100644 --- a/libcxx/test/std/experimental/any/any.class/any.assign/copy.pass.cpp +++ b/libcxx/test/std/experimental/any/any.class/any.assign/copy.pass.cpp @@ -9,6 +9,13 @@ // 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 + // // any& operator=(any const &); diff --git a/libcxx/test/std/experimental/any/any.class/any.assign/move.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.assign/move.pass.cpp index 49508febd94..35fc56c24d3 100644 --- a/libcxx/test/std/experimental/any/any.class/any.assign/move.pass.cpp +++ b/libcxx/test/std/experimental/any/any.class/any.assign/move.pass.cpp @@ -9,6 +9,13 @@ // 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 + // // any& operator=(any &&); diff --git a/libcxx/test/std/experimental/any/any.class/any.assign/value.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.assign/value.pass.cpp index b42a4ba2b05..8ff4ad59415 100644 --- a/libcxx/test/std/experimental/any/any.class/any.assign/value.pass.cpp +++ b/libcxx/test/std/experimental/any/any.class/any.assign/value.pass.cpp @@ -9,6 +9,13 @@ // 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 + // // any& operator=(any const &); @@ -174,4 +181,4 @@ int main() { test_assign_throws(); test_assign_throws(); test_assign_throws(); -} \ No newline at end of file +} diff --git a/libcxx/test/std/experimental/any/any.class/any.cons/copy.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.cons/copy.pass.cpp index 69341ca6b80..47f12d73923 100644 --- a/libcxx/test/std/experimental/any/any.class/any.cons/copy.pass.cpp +++ b/libcxx/test/std/experimental/any/any.class/any.cons/copy.pass.cpp @@ -9,6 +9,13 @@ // 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 + // // any(any const &); diff --git a/libcxx/test/std/experimental/any/any.class/any.cons/move.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.cons/move.pass.cpp index 2a050946afa..c5395daa3da 100644 --- a/libcxx/test/std/experimental/any/any.class/any.cons/move.pass.cpp +++ b/libcxx/test/std/experimental/any/any.class/any.cons/move.pass.cpp @@ -9,6 +9,13 @@ // 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 + // // any(any &&) noexcept; diff --git a/libcxx/test/std/experimental/any/any.class/any.cons/value.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.cons/value.pass.cpp index a3ab0edc8b6..fcace5028ec 100644 --- a/libcxx/test/std/experimental/any/any.class/any.cons/value.pass.cpp +++ b/libcxx/test/std/experimental/any/any.class/any.cons/value.pass.cpp @@ -9,6 +9,13 @@ // 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 + // // template any(Value &&) @@ -113,4 +120,4 @@ int main() { test_copy_value_throws(); test_copy_value_throws(); test_move_value_throws(); -} \ No newline at end of file +} diff --git a/libcxx/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp index 781ed73f2b3..1b0b75d61fe 100644 --- a/libcxx/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp +++ b/libcxx/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp @@ -9,6 +9,13 @@ // 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 + // // any::clear() noexcept diff --git a/libcxx/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp index b1d31546896..9f499b4a1fb 100644 --- a/libcxx/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp +++ b/libcxx/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp @@ -9,6 +9,13 @@ // 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 + // // any::swap(any &) noexcept diff --git a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp index 47fe52f7b1d..ca6d1de116e 100644 --- a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp @@ -9,6 +9,8 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx + // // template diff --git a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp index c6cc68d7270..1c52a64fce6 100644 --- a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp +++ b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp @@ -42,4 +42,4 @@ int main() { any_cast(static_cast(a)); // expected-error@experimental/any:* 3 {{static_assert failed "_ValueType is required to be a reference or a CopyConstructible type."}} // expected-error@experimental/any:* 3 {{calling a private constructor of class 'no_copy'}} -} \ No newline at end of file +} diff --git a/libcxx/test/std/experimental/any/any.nonmembers/swap.pass.cpp b/libcxx/test/std/experimental/any/any.nonmembers/swap.pass.cpp index a3fbd43d924..e79bc9ef099 100644 --- a/libcxx/test/std/experimental/any/any.nonmembers/swap.pass.cpp +++ b/libcxx/test/std/experimental/any/any.nonmembers/swap.pass.cpp @@ -34,7 +34,8 @@ int main() swap(a1, a2); - assert(any_cast(a1) == 2); - assert(any_cast(a2) == 1); + // Support testing against system dylibs that don't have bad_any_cast. + assert(*any_cast(&a1) == 2); + assert(*any_cast(&a2) == 1); } } diff --git a/libcxx/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp b/libcxx/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp index c166bb72a83..f269149829d 100644 --- a/libcxx/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp +++ b/libcxx/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp @@ -8,6 +8,12 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 // diff --git a/libcxx/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp b/libcxx/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp index 4630165f070..a4af713a391 100644 --- a/libcxx/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp +++ b/libcxx/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp @@ -8,6 +8,12 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability_markup=macosx10.12 +// XFAIL: availability_markup=macosx10.11 +// XFAIL: availability_markup=macosx10.10 +// XFAIL: availability_markup=macosx10.9 +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // diff --git a/libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp b/libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp index c8f07111c23..72d7790590d 100644 --- a/libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp +++ b/libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp @@ -8,6 +8,13 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 + // // T& optional::value(); diff --git a/libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp b/libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp index 98ff16e4d13..b3d6dfda4fb 100644 --- a/libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp +++ b/libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp @@ -8,6 +8,13 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 + // // constexpr const T& optional::value() const; -- cgit v1.2.3