diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-05-08 17:13:34 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-05-08 17:13:34 +0000 |
| commit | 733153a0fb52facba02c550ec849f0c734dfa412 (patch) | |
| tree | 8f249e8b8f6a7803a81bb0fed33213b9249b7ac1 /test/std | |
| parent | 2fa809d9eabddd820af54059faa8362dd50b51de (diff) | |
Notes
Diffstat (limited to 'test/std')
190 files changed, 1149 insertions, 190 deletions
diff --git a/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp b/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp index 1cf2d9e84562..8532998eb08d 100644 --- a/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp +++ b/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp @@ -30,7 +30,7 @@ test() int ia[] = {0, 1, 2, 3, 4, 2, 3, 4, 2}; const unsigned sa = sizeof(ia)/sizeof(ia[0]); int ib[sa]; - OutIter r = std::remove_copy_if(InIter(ia), InIter(ia+sa), + OutIter r = std::remove_copy_if(InIter(ia), InIter(ia+sa), OutIter(ib), equalToTwo); assert(base(r) == ib + sa-3); assert(ib[0] == 0); diff --git a/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp b/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp index 0a05c6f659ca..ec0526c2dc5c 100644 --- a/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp +++ b/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp @@ -25,7 +25,7 @@ struct eq { bool operator () (int v2) const { return v == v2; } int v; }; - + int main() { diff --git a/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp b/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp index c942d2e38a58..761d71bbf287 100644 --- a/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp +++ b/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp @@ -25,7 +25,7 @@ struct eq { bool operator () (int v2) const { return v == v2; } int v; }; - + int main() { int ia[] = {0, 1, 2, 3, 4, 5}; diff --git a/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp b/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp index e68344b4b259..2e52e260336d 100644 --- a/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp +++ b/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp @@ -25,7 +25,7 @@ struct ne { bool operator () (int v2) const { return v != v2; } int v; }; - + int main() { diff --git a/test/std/containers/sequences/vector.bool/emplace_back.pass.cpp b/test/std/containers/sequences/vector.bool/emplace_back.pass.cpp index 81a8ae475168..c737f05fdc2e 100644 --- a/test/std/containers/sequences/vector.bool/emplace_back.pass.cpp +++ b/test/std/containers/sequences/vector.bool/emplace_back.pass.cpp @@ -48,7 +48,7 @@ int main() assert(c.front() == false); assert(c.back() == true); #endif - c.emplace_back(1 == 1); + c.emplace_back(true); assert(c.size() == 3); assert(c.front() == false); assert(c[1] == true); @@ -82,7 +82,7 @@ int main() assert(c.front() == false); assert(c.back() == true); #endif - c.emplace_back(1 == 1); + c.emplace_back(true); assert(c.size() == 3); assert(c.front() == false); assert(c[1] == true); diff --git a/test/std/containers/sequences/vector.bool/vector_bool.pass.cpp b/test/std/containers/sequences/vector.bool/vector_bool.pass.cpp index 64104a40ec74..89f5a6645d05 100644 --- a/test/std/containers/sequences/vector.bool/vector_bool.pass.cpp +++ b/test/std/containers/sequences/vector.bool/vector_bool.pass.cpp @@ -32,7 +32,7 @@ int main() static_assert((std::is_same<H::argument_type, T>::value), "" ); static_assert((std::is_same<H::result_type, std::size_t>::value), "" ); ASSERT_NOEXCEPT(H()(T())); - + bool ba[] = {true, false, true, true, false}; T vb(std::begin(ba), std::end(ba)); H h; diff --git a/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp b/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp index dda19a9517fb..c829a97b4228 100644 --- a/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp +++ b/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp @@ -9,6 +9,10 @@ // <strstream> +// There was an overflow in the dylib on older macOS versions +// UNSUPPORTED: availability=macosx10.8 +// UNSUPPORTED: availability=macosx10.7 + // class strstreambuf // int overflow(int c); diff --git a/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp b/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp index 65ecc4921212..0783de85c5ff 100644 --- a/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp +++ b/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp @@ -7,6 +7,13 @@ // //===----------------------------------------------------------------------===// +// 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 + // <system_error> // class error_category @@ -24,7 +31,7 @@ void test_message_for_bad_value() { errno = E2BIG; // something that message will never generate const std::error_category& e_cat1 = std::generic_category(); const std::string msg = e_cat1.message(-1); - LIBCPP_ASSERT(msg == "Unknown error -1"); + LIBCPP_ASSERT(msg == "Unknown error -1" || msg == "Unknown error"); assert(errno == E2BIG); } diff --git a/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp b/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp index d1a94883f925..8cccb025538d 100644 --- a/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp +++ b/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp @@ -13,6 +13,13 @@ // const error_category& system_category(); +// 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 + #include <system_error> #include <cassert> #include <string> @@ -24,7 +31,7 @@ void test_message_for_bad_value() { errno = E2BIG; // something that message will never generate const std::error_category& e_cat1 = std::system_category(); const std::string msg = e_cat1.message(-1); - LIBCPP_ASSERT(msg == "Unknown error -1"); + LIBCPP_ASSERT(msg == "Unknown error -1" || msg == "Unknown error"); assert(errno == E2BIG); } diff --git a/test/std/experimental/any/any.class/any.assign/copy.pass.cpp b/test/std/experimental/any/any.class/any.assign/copy.pass.cpp index 17b01fe630bf..7140fab88feb 100644 --- a/test/std/experimental/any/any.class/any.assign/copy.pass.cpp +++ b/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 + // <experimental/any> // any& operator=(any const &); diff --git a/test/std/experimental/any/any.class/any.assign/move.pass.cpp b/test/std/experimental/any/any.class/any.assign/move.pass.cpp index 49508febd941..35fc56c24d3f 100644 --- a/test/std/experimental/any/any.class/any.assign/move.pass.cpp +++ b/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 + // <experimental/any> // any& operator=(any &&); diff --git a/test/std/experimental/any/any.class/any.assign/value.pass.cpp b/test/std/experimental/any/any.class/any.assign/value.pass.cpp index b42a4ba2b050..8ff4ad594151 100644 --- a/test/std/experimental/any/any.class/any.assign/value.pass.cpp +++ b/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 + // <experimental/any> // any& operator=(any const &); @@ -174,4 +181,4 @@ int main() { test_assign_throws<small_throws_on_copy>(); test_assign_throws<large_throws_on_copy>(); test_assign_throws<throws_on_move, /* Move = */ true>(); -}
\ No newline at end of file +} diff --git a/test/std/experimental/any/any.class/any.cons/copy.pass.cpp b/test/std/experimental/any/any.class/any.cons/copy.pass.cpp index 69341ca6b801..47f12d739236 100644 --- a/test/std/experimental/any/any.class/any.cons/copy.pass.cpp +++ b/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 + // <experimental/any> // any(any const &); diff --git a/test/std/experimental/any/any.class/any.cons/move.pass.cpp b/test/std/experimental/any/any.class/any.cons/move.pass.cpp index 2a050946afab..c5395daa3da6 100644 --- a/test/std/experimental/any/any.class/any.cons/move.pass.cpp +++ b/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 + // <experimental/any> // any(any &&) noexcept; diff --git a/test/std/experimental/any/any.class/any.cons/value.pass.cpp b/test/std/experimental/any/any.class/any.cons/value.pass.cpp index a3ab0edc8b6b..fcace5028eca 100644 --- a/test/std/experimental/any/any.class/any.cons/value.pass.cpp +++ b/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 + // <experimental/any> // template <class Value> any(Value &&) @@ -113,4 +120,4 @@ int main() { test_copy_value_throws<small_throws_on_copy>(); test_copy_value_throws<large_throws_on_copy>(); test_move_value_throws(); -}
\ No newline at end of file +} diff --git a/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp b/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp index 781ed73f2b33..1b0b75d61fee 100644 --- a/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp +++ b/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 + // <experimental/any> // any::clear() noexcept diff --git a/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp b/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp index b1d315468968..9f499b4a1fb3 100644 --- a/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp +++ b/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 + // <experimental/any> // any::swap(any &) noexcept diff --git a/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp b/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp index 47fe52f7b1dd..ca6d1de116ee 100644 --- a/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ b/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 + // <experimental/any> // template <class ValueType> diff --git a/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp b/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp index c6cc68d72706..1c52a64fce62 100644 --- a/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp +++ b/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp @@ -42,4 +42,4 @@ int main() { any_cast<no_copy>(static_cast<any &&>(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/test/std/experimental/any/any.nonmembers/swap.pass.cpp b/test/std/experimental/any/any.nonmembers/swap.pass.cpp index a3fbd43d9247..e79bc9ef099c 100644 --- a/test/std/experimental/any/any.nonmembers/swap.pass.cpp +++ b/test/std/experimental/any/any.nonmembers/swap.pass.cpp @@ -34,7 +34,8 @@ int main() swap(a1, a2); - assert(any_cast<int>(a1) == 2); - assert(any_cast<int>(a2) == 1); + // Support testing against system dylibs that don't have bad_any_cast. + assert(*any_cast<int>(&a1) == 2); + assert(*any_cast<int>(&a2) == 1); } } diff --git a/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp b/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp index c166bb72a837..f269149829d2 100644 --- a/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp +++ b/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 // <optional> diff --git a/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp b/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp index 4630165f0708..a4af713a3910 100644 --- a/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp +++ b/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 // <optional> diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp index c8f07111c23d..72d7790590d8 100644 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp +++ b/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 + // <optional> // T& optional<T>::value(); diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp index 98ff16e4d13b..b3d6dfda4fb5 100644 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp +++ b/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 + // <optional> // constexpr const T& optional<T>::value() const; diff --git a/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp index fcc86a13ffa1..949ea50d08a2 100644 --- a/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp +++ b/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp @@ -15,13 +15,33 @@ // void swap(basic_fstream& rhs); #include <fstream> +#include <utility> #include <cassert> #include "platform_support.h" +std::pair<std::string, std::string> get_temp_file_names() { + std::pair<std::string, std::string> names; + names.first = get_temp_file_name(); + + // Create the file so the next call to `get_temp_file_name()` doesn't + // return the same file. + std::FILE *fd1 = std::fopen(names.first.c_str(), "w"); + + names.second = get_temp_file_name(); + assert(names.first != names.second); + + std::fclose(fd1); + std::remove(names.first.c_str()); + + return names; +} + int main() { - std::string temp1 = get_temp_file_name(); - std::string temp2 = get_temp_file_name(); + std::pair<std::string, std::string> temp_files = get_temp_file_names(); + std::string& temp1 = temp_files.first; + std::string& temp2 = temp_files.second; + assert(temp1 != temp2); { std::fstream fs1(temp1.c_str(), std::ios_base::in | std::ios_base::out | std::ios_base::trunc); diff --git a/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp index 0a4f7240daa1..4ff84f26cfa4 100644 --- a/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp +++ b/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp @@ -16,13 +16,34 @@ // void swap(basic_fstream<charT, traits>& x, basic_fstream<charT, traits>& y); #include <fstream> +#include <utility> #include <cassert> #include "platform_support.h" + +std::pair<std::string, std::string> get_temp_file_names() { + std::pair<std::string, std::string> names; + names.first = get_temp_file_name(); + + // Create the file so the next call to `get_temp_file_name()` doesn't + // return the same file. + std::FILE *fd1 = std::fopen(names.first.c_str(), "w"); + + names.second = get_temp_file_name(); + assert(names.first != names.second); + + std::fclose(fd1); + std::remove(names.first.c_str()); + + return names; +} + int main() { - std::string temp1 = get_temp_file_name(); - std::string temp2 = get_temp_file_name(); + std::pair<std::string, std::string> temp_files = get_temp_file_names(); + std::string& temp1 = temp_files.first; + std::string& temp2 = temp_files.second; + assert(temp1 != temp2); { std::fstream fs1(temp1.c_str(), std::ios_base::in | std::ios_base::out | std::ios_base::trunc); diff --git a/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp index 519b84fb1abe..95224774c67e 100644 --- a/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp +++ b/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp @@ -15,13 +15,33 @@ // void swap(basic_ofstream& rhs); #include <fstream> +#include <utility> #include <cassert> #include "platform_support.h" +std::pair<std::string, std::string> get_temp_file_names() { + std::pair<std::string, std::string> names; + names.first = get_temp_file_name(); + + // Create the file so the next call to `get_temp_file_name()` doesn't + // return the same file. + std::FILE *fd1 = std::fopen(names.first.c_str(), "w"); + + names.second = get_temp_file_name(); + assert(names.first != names.second); + + std::fclose(fd1); + std::remove(names.first.c_str()); + + return names; +} + int main() { - std::string temp1 = get_temp_file_name(); - std::string temp2 = get_temp_file_name(); + std::pair<std::string, std::string> temp_files = get_temp_file_names(); + std::string& temp1 = temp_files.first; + std::string& temp2 = temp_files.second; + assert(temp1 != temp2); { std::ofstream fs1(temp1.c_str()); std::ofstream fs2(temp2.c_str()); diff --git a/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp b/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp index d58f5f256004..31f2153ebd4c 100644 --- a/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp +++ b/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp @@ -16,13 +16,33 @@ // void swap(basic_ofstream<charT, traits>& x, basic_ofstream<charT, traits>& y); #include <fstream> +#include <utility> #include <cassert> #include "platform_support.h" +std::pair<std::string, std::string> get_temp_file_names() { + std::pair<std::string, std::string> names; + names.first = get_temp_file_name(); + + // Create the file so the next call to `get_temp_file_name()` doesn't + // return the same file. + std::FILE *fd1 = std::fopen(names.first.c_str(), "w"); + + names.second = get_temp_file_name(); + assert(names.first != names.second); + + std::fclose(fd1); + std::remove(names.first.c_str()); + + return names; +} + int main() { - std::string temp1 = get_temp_file_name(); - std::string temp2 = get_temp_file_name(); + std::pair<std::string, std::string> temp_files = get_temp_file_names(); + std::string& temp1 = temp_files.first; + std::string& temp2 = temp_files.second; + assert(temp1 != temp2); { std::ofstream fs1(temp1.c_str()); std::ofstream fs2(temp2.c_str()); diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp index 52b35666424a..eda490f8df4a 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 + // <istream> // template <class charT, class traits = char_traits<charT> > diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp index 0f356e26d237..c7f16ca7e385 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 + // <istream> // int_type get(); diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp index cf06e343bcc2..b3d3c69b43d3 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 + // <istream> // basic_istream<charT,traits>& get(char_type& c); diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp index 3095712b9dbc..3a37cffce3af 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <istream> // basic_istream<charT,traits>& diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp index 20e70cfbd5cd..ceef0d28fc6b 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 + // <istream> // basic_istream<charT,traits>& read(char_type* s, streamsize n); diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp index 01eecb5d824b..a0a8e2f1b3b3 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <istream> // streamsize readsome(char_type* s, streamsize n); diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp index dc4e0ba0de20..e370b4bfb009 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <istream> // basic_istream<charT,traits>& seekg(pos_type pos); diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp index 818d42c26212..cac1e39554ed 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp @@ -7,6 +7,13 @@ // //===----------------------------------------------------------------------===// +// 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 + // <istream> // basic_istream<charT,traits>& seekg(off_type off, ios_base::seekdir dir); diff --git a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minmax_showbase.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minmax_showbase.pass.cpp new file mode 100644 index 000000000000..956cd171a1de --- /dev/null +++ b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minmax_showbase.pass.cpp @@ -0,0 +1,97 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <ostream> + +// template <class charT, class traits = char_traits<charT> > +// class basic_ostream; + +// operator<<(short n); +// operator<<(unsigned short n); +// operator<<(int n); +// operator<<(unsigned int n); +// operator<<(long n); +// operator<<(unsigned long n); +// operator<<(long long n); +// operator<<(unsigned long long n); + +// Testing to make sure that the max length values are correctly inserted when +// using std::showbase + +#include <cassert> +#include <cstdint> +#include <ios> +#include <limits> +#include <sstream> +#include <type_traits> + +template <typename T> +static void test(std::ios_base::fmtflags fmt, const char *expected) +{ + std::stringstream ss; + ss.setf(fmt, std::ios_base::basefield); + ss << std::showbase << (std::is_signed<T>::value ? std::numeric_limits<T>::min() : std::numeric_limits<T>::max()); + assert(ss.str() == expected); +} + +int main(void) +{ + const std::ios_base::fmtflags o = std::ios_base::oct; + const std::ios_base::fmtflags d = std::ios_base::dec; + const std::ios_base::fmtflags x = std::ios_base::hex; + + test<short>(o, "0100000"); + test<short>(d, "-32768"); + test<short>(x, "0x8000"); + + test<unsigned short>(o, "0177777"); + test<unsigned short>(d, "65535"); + test<unsigned short>(x, "0xffff"); + + test<int>(o, "020000000000"); + test<int>(d, "-2147483648"); + test<int>(x, "0x80000000"); + + test<unsigned int>(o, "037777777777"); + test<unsigned int>(d, "4294967295"); + test<unsigned int>(x, "0xffffffff"); + + const bool long_is_32 = std::integral_constant<bool, sizeof(long) == sizeof(int32_t)>::value; // avoid compiler warnings + const bool long_is_64 = std::integral_constant<bool, sizeof(long) == sizeof(int64_t)>::value; // avoid compiler warnings + const bool long_long_is_64 = std::integral_constant<bool, sizeof(long long) == sizeof(int64_t)>::value; // avoid compiler warnings + + if (long_is_32) { + test<long>(o, "020000000000"); + test<long>(d, "-2147483648"); + test<long>(x, "0x80000000"); + + test<unsigned long>(o, "037777777777"); + test<unsigned long>(d, "4294967295"); + test<unsigned long>(x, "0xffffffff"); + } else if (long_is_64) { + test<long>(o, "01000000000000000000000"); + test<long>(d, "-9223372036854775808"); + test<long>(x, "0x8000000000000000"); + + test<unsigned long>(o, "01777777777777777777777"); + test<unsigned long>(d, "18446744073709551615"); + test<unsigned long>(x, "0xffffffffffffffff"); + } + if (long_long_is_64) { + test<long long>(o, "01000000000000000000000"); + test<long long>(d, "-9223372036854775808"); + test<long long>(x, "0x8000000000000000"); + + test<unsigned long long>(o, "01777777777777777777777"); + test<unsigned long long>(d, "18446744073709551615"); + test<unsigned long long>(x, "0xffffffffffffffff"); + } + + return 0; +} diff --git a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp index e09c0ed20461..54c8a283815e 100644 --- a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp +++ b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.12 + // <ostream> // template <class charT, class traits = char_traits<charT> > diff --git a/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp b/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp index a680aa3f499b..3046ced75a70 100644 --- a/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp +++ b/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp @@ -40,12 +40,22 @@ #include <type_traits> #include <string> +#include "test_macros.h" + int main() { typedef std::istream_iterator<double> I1; // double is trivially destructible +#if TEST_STD_VER <= 14 static_assert((std::is_convertible<I1, std::iterator<std::input_iterator_tag, double, std::ptrdiff_t, const double*, const double&> >::value), ""); +#else + static_assert((std::is_same<I1::iterator_category, std::input_iterator_tag>::value), ""); + static_assert((std::is_same<I1::value_type, double>::value), ""); + static_assert((std::is_same<I1::difference_type, std::ptrdiff_t>::value), ""); + static_assert((std::is_same<I1::pointer, const double*>::value), ""); + static_assert((std::is_same<I1::reference, const double&>::value), ""); +#endif static_assert((std::is_same<I1::char_type, char>::value), ""); static_assert((std::is_same<I1::traits_type, std::char_traits<char> >::value), ""); static_assert((std::is_same<I1::istream_type, std::istream>::value), ""); @@ -53,9 +63,17 @@ int main() static_assert( std::is_trivially_destructible<I1>::value, ""); typedef std::istream_iterator<unsigned, wchar_t> I2; // unsigned is trivially destructible +#if TEST_STD_VER <= 14 static_assert((std::is_convertible<I2, std::iterator<std::input_iterator_tag, unsigned, std::ptrdiff_t, const unsigned*, const unsigned&> >::value), ""); +#else + static_assert((std::is_same<I2::iterator_category, std::input_iterator_tag>::value), ""); + static_assert((std::is_same<I2::value_type, unsigned>::value), ""); + static_assert((std::is_same<I2::difference_type, std::ptrdiff_t>::value), ""); + static_assert((std::is_same<I2::pointer, const unsigned*>::value), ""); + static_assert((std::is_same<I2::reference, const unsigned&>::value), ""); +#endif static_assert((std::is_same<I2::char_type, wchar_t>::value), ""); static_assert((std::is_same<I2::traits_type, std::char_traits<wchar_t> >::value), ""); static_assert((std::is_same<I2::istream_type, std::wistream>::value), ""); diff --git a/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp b/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp index 460da642bc6e..8d043e1e6347 100644 --- a/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp +++ b/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp @@ -23,17 +23,35 @@ #include <iterator> #include <type_traits> +#include "test_macros.h" + int main() { typedef std::ostream_iterator<double> I1; +#if TEST_STD_VER <= 14 static_assert((std::is_convertible<I1, std::iterator<std::output_iterator_tag, void, void, void, void> >::value), ""); +#else + static_assert((std::is_same<I1::iterator_category, std::output_iterator_tag>::value), ""); + static_assert((std::is_same<I1::value_type, void>::value), ""); + static_assert((std::is_same<I1::difference_type, void>::value), ""); + static_assert((std::is_same<I1::pointer, void>::value), ""); + static_assert((std::is_same<I1::reference, void>::value), ""); +#endif static_assert((std::is_same<I1::char_type, char>::value), ""); static_assert((std::is_same<I1::traits_type, std::char_traits<char> >::value), ""); static_assert((std::is_same<I1::ostream_type, std::ostream>::value), ""); typedef std::ostream_iterator<unsigned, wchar_t> I2; +#if TEST_STD_VER <= 14 static_assert((std::is_convertible<I2, std::iterator<std::output_iterator_tag, void, void, void, void> >::value), ""); +#else + static_assert((std::is_same<I2::iterator_category, std::output_iterator_tag>::value), ""); + static_assert((std::is_same<I2::value_type, void>::value), ""); + static_assert((std::is_same<I2::difference_type, void>::value), ""); + static_assert((std::is_same<I2::pointer, void>::value), ""); + static_assert((std::is_same<I2::reference, void>::value), ""); +#endif static_assert((std::is_same<I2::char_type, wchar_t>::value), ""); static_assert((std::is_same<I2::traits_type, std::char_traits<wchar_t> >::value), ""); static_assert((std::is_same<I2::ostream_type, std::wostream>::value), ""); diff --git a/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp b/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp index a699b2419830..cdf74846547d 100644 --- a/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp +++ b/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp @@ -24,19 +24,37 @@ #include <string> #include <type_traits> +#include "test_macros.h" + int main() { typedef std::ostreambuf_iterator<char> I1; +#if TEST_STD_VER <= 14 static_assert((std::is_convertible<I1, std::iterator<std::output_iterator_tag, void, void, void, void> >::value), ""); +#else + static_assert((std::is_same<I1::iterator_category, std::output_iterator_tag>::value), ""); + static_assert((std::is_same<I1::value_type, void>::value), ""); + static_assert((std::is_same<I1::difference_type, void>::value), ""); + static_assert((std::is_same<I1::pointer, void>::value), ""); + static_assert((std::is_same<I1::reference, void>::value), ""); +#endif static_assert((std::is_same<I1::char_type, char>::value), ""); static_assert((std::is_same<I1::traits_type, std::char_traits<char> >::value), ""); static_assert((std::is_same<I1::streambuf_type, std::streambuf>::value), ""); static_assert((std::is_same<I1::ostream_type, std::ostream>::value), ""); typedef std::ostreambuf_iterator<wchar_t> I2; +#if TEST_STD_VER <= 14 static_assert((std::is_convertible<I2, std::iterator<std::output_iterator_tag, void, void, void, void> >::value), ""); +#else + static_assert((std::is_same<I2::iterator_category, std::output_iterator_tag>::value), ""); + static_assert((std::is_same<I2::value_type, void>::value), ""); + static_assert((std::is_same<I2::difference_type, void>::value), ""); + static_assert((std::is_same<I2::pointer, void>::value), ""); + static_assert((std::is_same<I2::reference, void>::value), ""); +#endif static_assert((std::is_same<I2::char_type, wchar_t>::value), ""); static_assert((std::is_same<I2::traits_type, std::char_traits<wchar_t> >::value), ""); static_assert((std::is_same<I2::streambuf_type, std::wstreambuf>::value), ""); diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp index c88e5b06e675..41b14a6e5bf3 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp @@ -12,11 +12,23 @@ // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14 // Older Clang versions do not support this -// XFAIL: clang-3, apple-clang +// XFAIL: clang-3, apple-clang-7, apple-clang-8 // None of the current GCC compilers support this. // XFAIL: gcc +// 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 + +// On Windows libc++ doesn't provide its own definitions for new/delete +// but instead depends on the ones in VCRuntime. However VCRuntime does not +// yet provide aligned new/delete definitions so this test fails to compile/link. +// XFAIL: LIBCXX-WINDOWS-FIXME + #include <new> #include <cstddef> #include <cstdlib> diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp index 55c26fa5c4a7..4c9da471294d 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp @@ -15,6 +15,19 @@ // FIXME change this to XFAIL. // UNSUPPORTED: no-aligned-allocation +// 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 + + +// On Windows libc++ doesn't provide its own definitions for new/delete +// but instead depends on the ones in VCRuntime. However VCRuntime does not +// yet provide aligned new/delete definitions so this test fails to link. +// XFAIL: LIBCXX-WINDOWS-FIXME + // test operator new #include <new> @@ -29,7 +42,7 @@ constexpr auto OverAligned = alignof(std::max_align_t) * 2; int new_handler_called = 0; -void new_handler() +void my_new_handler() { ++new_handler_called; std::set_new_handler(0); @@ -45,7 +58,7 @@ struct alignas(OverAligned) A void test_throw_max_size() { #ifndef TEST_HAS_NO_EXCEPTIONS - std::set_new_handler(new_handler); + std::set_new_handler(my_new_handler); try { void* vp = operator new[] (std::numeric_limits<std::size_t>::max(), diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp index ec5d0a445baa..8e9eff9e206e 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp @@ -15,6 +15,18 @@ // FIXME turn this into an XFAIL // UNSUPPORTED: no-aligned-allocation +// 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 + +// On Windows libc++ doesn't provide its own definitions for new/delete +// but instead depends on the ones in VCRuntime. However VCRuntime does not +// yet provide aligned new/delete definitions so this test fails to compile/link. +// XFAIL: LIBCXX-WINDOWS-FIXME + // test operator new (nothrow) #include <new> diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp index 03e490e8ed85..46f411d15684 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp @@ -10,8 +10,20 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: sanitizer-new-delete +// 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: no-aligned-allocation +// On Windows libc++ doesn't provide its own definitions for new/delete +// but instead depends on the ones in VCRuntime. However VCRuntime does not +// yet provide aligned new/delete definitions so this test fails. +// XFAIL: LIBCXX-WINDOWS-FIXME + // test operator new nothrow by replacing only operator new #include <new> diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp index 5b93540eac57..f71cf19cc80b 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp @@ -13,6 +13,12 @@ // when sized deallocation is not supported, e.g., prior to C++14. // UNSUPPORTED: sanitizer-new-delete +// 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 + // NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation. // REQUIRES: fsized-deallocation diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp index a5d4df34a85d..514e5e1044a0 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp @@ -10,13 +10,23 @@ // test aligned operator delete replacement. // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14 - // Older Clang versions do not support this -// XFAIL: clang-3, apple-clang +// XFAIL: clang-3, apple-clang-7, apple-clang-8 // None of the current GCC compilers support this. // XFAIL: gcc +// 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 + +// On Windows libc++ doesn't provide its own definitions for new/delete +// but instead depends on the ones in VCRuntime. However VCRuntime does not +// yet provide aligned new/delete definitions so this test fails to compile/link. +// XFAIL: LIBCXX-WINDOWS-FIXME #include <new> #include <cstddef> diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp index 5ebbc8a1a2d9..2dcb2dc2c578 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp @@ -9,12 +9,24 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // asan and msan will not call the new handler. // UNSUPPORTED: sanitizer-new-delete // FIXME turn this into an XFAIL // UNSUPPORTED: no-aligned-allocation +// On Windows libc++ doesn't provide its own definitions for new/delete +// but instead depends on the ones in VCRuntime. However VCRuntime does not +// yet provide aligned new/delete definitions so this test fails to compile/link. +// XFAIL: LIBCXX-WINDOWS-FIXME + // test operator new #include <new> diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp index 6e2eca314771..e77b41336174 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp @@ -9,12 +9,24 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // asan and msan will not call the new handler. // UNSUPPORTED: sanitizer-new-delete // FIXME turn this into an XFAIL // UNSUPPORTED: no-aligned-allocation +// On Windows libc++ doesn't provide its own definitions for new/delete +// but instead depends on the ones in VCRuntime. However VCRuntime does not +// yet provide aligned new/delete definitions so this test fails to compile/link. +// XFAIL: LIBCXX-WINDOWS-FIXME + // test operator new (nothrow) #include <new> diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp index 9f64c9730166..862ec1ba66a4 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp @@ -10,8 +10,20 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: sanitizer-new-delete +// 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: no-aligned-allocation +// On Windows libc++ doesn't provide its own definitions for new/delete +// but instead depends on the ones in VCRuntime. However VCRuntime does not +// yet provide aligned new/delete definitions so this test fails. +// XFAIL: LIBCXX-WINDOWS-FIXME + // test operator new nothrow by replacing only operator new #include <new> diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp index 61fca5f125bf..40de3a09800c 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp @@ -13,6 +13,11 @@ // when sized deallocation is not supported, e.g., prior to C++14. // UNSUPPORTED: sanitizer-new-delete +// 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 // NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation. // REQUIRES: fsized-deallocation diff --git a/test/std/language.support/support.exception/except.nested/assign.pass.cpp b/test/std/language.support/support.exception/except.nested/assign.pass.cpp index ec5575d072ce..6338c8aaa26e 100644 --- a/test/std/language.support/support.exception/except.nested/assign.pass.cpp +++ b/test/std/language.support/support.exception/except.nested/assign.pass.cpp @@ -7,9 +7,6 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows -// XFAIL: LIBCXX-WINDOWS-FIXME - // <exception> // class nested_exception; diff --git a/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp b/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp index 92134c993af3..4cbdbb2ec892 100644 --- a/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp +++ b/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp @@ -7,9 +7,6 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows -// XFAIL: LIBCXX-WINDOWS-FIXME - // <exception> // class nested_exception; diff --git a/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp b/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp index 8f8503b254d3..18ca9968ff56 100644 --- a/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp +++ b/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp @@ -7,9 +7,6 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows -// XFAIL: LIBCXX-WINDOWS-FIXME - // <exception> // class nested_exception; diff --git a/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp b/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp index fe9cd6042ba8..88e2253d08c7 100644 --- a/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp +++ b/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp @@ -7,10 +7,11 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows +// UNSUPPORTED: libcpp-no-exceptions + +// This test fails due to a stack overflow // XFAIL: LIBCXX-WINDOWS-FIXME -// UNSUPPORTED: libcpp-no-exceptions // <exception> // class nested_exception; diff --git a/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp b/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp index 73d02da39333..d511a72f9f57 100644 --- a/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp +++ b/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp @@ -7,9 +7,6 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows -// XFAIL: LIBCXX-WINDOWS-FIXME - // UNSUPPORTED: libcpp-no-exceptions // <exception> diff --git a/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp b/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp index 6353afcb239b..6a9f25cd0855 100644 --- a/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp +++ b/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp @@ -7,9 +7,6 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows -// XFAIL: LIBCXX-WINDOWS-FIXME - // UNSUPPORTED: libcpp-no-exceptions // <exception> diff --git a/test/std/language.support/support.exception/propagation/current_exception.pass.cpp b/test/std/language.support/support.exception/propagation/current_exception.pass.cpp index 2046997774a8..c33d64d06f0d 100644 --- a/test/std/language.support/support.exception/propagation/current_exception.pass.cpp +++ b/test/std/language.support/support.exception/propagation/current_exception.pass.cpp @@ -7,7 +7,8 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows +// This test needs to be rewritten for the Windows exception_ptr semantics +// which copy the exception each time the exception_ptr is copied. // XFAIL: LIBCXX-WINDOWS-FIXME // UNSUPPORTED: libcpp-no-exceptions diff --git a/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp b/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp index 9621a7360364..3aa8dcf55bbc 100644 --- a/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp +++ b/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp @@ -7,9 +7,6 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows -// XFAIL: LIBCXX-WINDOWS-FIXME - // <exception> // typedef unspecified exception_ptr; diff --git a/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp b/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp index 4980c656b2b5..35821d9bd1b6 100644 --- a/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp +++ b/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp @@ -7,9 +7,6 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows -// XFAIL: LIBCXX-WINDOWS-FIXME - // UNSUPPORTED: libcpp-no-exceptions // <exception> @@ -41,7 +38,12 @@ int main() } catch (const A& a) { +#ifndef _LIBCPP_ABI_MICROSOFT assert(A::constructed == 1); +#else + // On Windows exception_ptr copies the exception + assert(A::constructed == 2); +#endif assert(p != nullptr); p = nullptr; assert(p == nullptr); @@ -50,4 +52,5 @@ int main() } assert(A::constructed == 0); } + assert(A::constructed == 0); } diff --git a/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp b/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp index 7d27eee6689a..37ffb5be506a 100644 --- a/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp +++ b/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp @@ -7,9 +7,6 @@ // //===----------------------------------------------------------------------===// -// exception_ptr has not been implemented on Windows -// XFAIL: LIBCXX-WINDOWS-FIXME - // UNSUPPORTED: libcpp-no-exceptions // <exception> @@ -49,7 +46,12 @@ int main() } catch (const A& a) { +#ifndef _LIBCPP_ABI_MICROSOFT assert(A::constructed == 1); +#else + // On Windows the exception_ptr copies the exception + assert(A::constructed == 2); +#endif assert(p != nullptr); p = nullptr; assert(p == nullptr); @@ -58,4 +60,5 @@ int main() } assert(A::constructed == 0); } + assert(A::constructed == 0); } diff --git a/test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp b/test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp index b92671588027..e35e7afa322a 100644 --- a/test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp +++ b/test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: libcpp-no-exceptions + +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.11 + // test uncaught_exceptions #include <exception> diff --git a/test/std/language.support/support.types/byte.pass.cpp b/test/std/language.support/support.types/byte.pass.cpp index aed44f91218f..66b2a553186d 100644 --- a/test/std/language.support/support.types/byte.pass.cpp +++ b/test/std/language.support/support.types/byte.pass.cpp @@ -13,7 +13,7 @@ // XFAIL: c++98, c++03, c++11, c++14 -// std::byte is not an integer type, nor a character type. +// std::byte is not an integer type, nor a character type. // It is a distinct type for accessing the bits that ultimately make up object storage. static_assert( std::is_pod<std::byte>::value, "" ); diff --git a/test/std/language.support/support.types/byteops/lshift.assign.fail.cpp b/test/std/language.support/support.types/byteops/lshift.assign.fail.cpp index 298edb22d249..8f6822932ac2 100644 --- a/test/std/language.support/support.types/byteops/lshift.assign.fail.cpp +++ b/test/std/language.support/support.types/byteops/lshift.assign.fail.cpp @@ -17,7 +17,7 @@ // template <class IntegerType> // constexpr byte& operator<<=(byte& b, IntegerType shift) noexcept; -// This function shall not participate in overload resolution unless +// This function shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. diff --git a/test/std/language.support/support.types/byteops/lshift.assign.pass.cpp b/test/std/language.support/support.types/byteops/lshift.assign.pass.cpp index f7e0dee9c6bb..dad692e14a6b 100644 --- a/test/std/language.support/support.types/byteops/lshift.assign.pass.cpp +++ b/test/std/language.support/support.types/byteops/lshift.assign.pass.cpp @@ -17,7 +17,7 @@ // template <class IntegerType> // constexpr byte& operator<<=(byte& b, IntegerType shift) noexcept; -// This function shall not participate in overload resolution unless +// This function shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. @@ -32,7 +32,7 @@ int main () { constexpr std::byte b3{3}; static_assert(noexcept(b <<= 2), "" ); - + static_assert(std::to_integer<int>(test(b2)) == 8, "" ); static_assert(std::to_integer<int>(test(b3)) == 12, "" ); diff --git a/test/std/language.support/support.types/byteops/lshift.fail.cpp b/test/std/language.support/support.types/byteops/lshift.fail.cpp index c950329334be..6b1a68f83d25 100644 --- a/test/std/language.support/support.types/byteops/lshift.fail.cpp +++ b/test/std/language.support/support.types/byteops/lshift.fail.cpp @@ -17,7 +17,7 @@ // template <class IntegerType> // constexpr byte operator <<(byte b, IntegerType shift) noexcept; -// These functions shall not participate in overload resolution unless +// These functions shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. int main () { diff --git a/test/std/language.support/support.types/byteops/lshift.pass.cpp b/test/std/language.support/support.types/byteops/lshift.pass.cpp index b4a8325199ff..39d659023ad8 100644 --- a/test/std/language.support/support.types/byteops/lshift.pass.cpp +++ b/test/std/language.support/support.types/byteops/lshift.pass.cpp @@ -17,17 +17,17 @@ // template <class IntegerType> // constexpr byte operator <<(byte b, IntegerType shift) noexcept; -// These functions shall not participate in overload resolution unless +// These functions shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. int main () { constexpr std::byte b1{1}; constexpr std::byte b3{3}; - + static_assert(noexcept(b3 << 2), "" ); static_assert(std::to_integer<int>(b1 << 1) == 2, ""); static_assert(std::to_integer<int>(b1 << 2) == 4, ""); static_assert(std::to_integer<int>(b3 << 4) == 48, ""); - static_assert(std::to_integer<int>(b3 << 6) == 192, ""); + static_assert(std::to_integer<int>(b3 << 6) == 192, ""); } diff --git a/test/std/language.support/support.types/byteops/rshift.assign.fail.cpp b/test/std/language.support/support.types/byteops/rshift.assign.fail.cpp index 3a0c218aff82..44992fa98c33 100644 --- a/test/std/language.support/support.types/byteops/rshift.assign.fail.cpp +++ b/test/std/language.support/support.types/byteops/rshift.assign.fail.cpp @@ -17,7 +17,7 @@ // template <class IntegerType> // constexpr byte operator>>(byte& b, IntegerType shift) noexcept; -// This function shall not participate in overload resolution unless +// This function shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. diff --git a/test/std/language.support/support.types/byteops/rshift.assign.pass.cpp b/test/std/language.support/support.types/byteops/rshift.assign.pass.cpp index 5b970258f5e0..b7e9a24f20a1 100644 --- a/test/std/language.support/support.types/byteops/rshift.assign.pass.cpp +++ b/test/std/language.support/support.types/byteops/rshift.assign.pass.cpp @@ -17,7 +17,7 @@ // template <class IntegerType> // constexpr byte& operator>>=(byte& b, IntegerType shift) noexcept; -// This function shall not participate in overload resolution unless +// This function shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. diff --git a/test/std/language.support/support.types/byteops/rshift.fail.cpp b/test/std/language.support/support.types/byteops/rshift.fail.cpp index 14e2fcfa1301..a0309539a7a6 100644 --- a/test/std/language.support/support.types/byteops/rshift.fail.cpp +++ b/test/std/language.support/support.types/byteops/rshift.fail.cpp @@ -17,7 +17,7 @@ // template <class IntegerType> // constexpr byte operator >>(byte b, IntegerType shift) noexcept; -// These functions shall not participate in overload resolution unless +// These functions shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. int main () { diff --git a/test/std/language.support/support.types/byteops/rshift.pass.cpp b/test/std/language.support/support.types/byteops/rshift.pass.cpp index 5ff986a70ade..876732545ac8 100644 --- a/test/std/language.support/support.types/byteops/rshift.pass.cpp +++ b/test/std/language.support/support.types/byteops/rshift.pass.cpp @@ -17,7 +17,7 @@ // template <class IntegerType> // constexpr byte operator <<(byte b, IntegerType shift) noexcept; -// These functions shall not participate in overload resolution unless +// These functions shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. @@ -29,12 +29,12 @@ constexpr std::byte test(std::byte b) { int main () { constexpr std::byte b100{100}; constexpr std::byte b115{115}; - + static_assert(noexcept(b100 << 2), "" ); static_assert(std::to_integer<int>(b100 >> 1) == 50, ""); static_assert(std::to_integer<int>(b100 >> 2) == 25, ""); static_assert(std::to_integer<int>(b115 >> 3) == 14, ""); - static_assert(std::to_integer<int>(b115 >> 6) == 1, ""); + static_assert(std::to_integer<int>(b115 >> 6) == 1, ""); } diff --git a/test/std/language.support/support.types/byteops/to_integer.fail.cpp b/test/std/language.support/support.types/byteops/to_integer.fail.cpp index 8832e506a118..426ceb7a67de 100644 --- a/test/std/language.support/support.types/byteops/to_integer.fail.cpp +++ b/test/std/language.support/support.types/byteops/to_integer.fail.cpp @@ -17,7 +17,7 @@ // template <class IntegerType> // constexpr IntegerType to_integer(byte b) noexcept; -// This function shall not participate in overload resolution unless +// This function shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. int main () { diff --git a/test/std/language.support/support.types/byteops/to_integer.pass.cpp b/test/std/language.support/support.types/byteops/to_integer.pass.cpp index 4aca0be82deb..21dff0196a43 100644 --- a/test/std/language.support/support.types/byteops/to_integer.pass.cpp +++ b/test/std/language.support/support.types/byteops/to_integer.pass.cpp @@ -17,13 +17,13 @@ // template <class IntegerType> // constexpr IntegerType to_integer(byte b) noexcept; -// This function shall not participate in overload resolution unless +// This function shall not participate in overload resolution unless // is_integral_v<IntegerType> is true. int main () { constexpr std::byte b1{1}; constexpr std::byte b3{3}; - + static_assert(noexcept(std::to_integer<int>(b1)), "" ); static_assert(std::is_same<int, decltype(std::to_integer<int>(b1))>::value, "" ); static_assert(std::is_same<long, decltype(std::to_integer<long>(b1))>::value, "" ); diff --git a/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp b/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp index 2e2e97361994..06c171f56da6 100644 --- a/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp @@ -9,8 +9,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // <locale> diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp index 94e45302f10b..a9a8720146a4 100644 --- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp @@ -15,9 +15,6 @@ // charT tolower(charT) const; -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - #include <locale> #include <cassert> diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp index d97dc5747e54..67fe44931342 100644 --- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp @@ -15,9 +15,6 @@ // const charT* tolower(charT* low, const charT* high) const; -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - #include <locale> #include <string> #include <cassert> diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp index d2ad328268f1..271ae2c0319d 100644 --- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp @@ -15,9 +15,6 @@ // charT toupper(charT) const; -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - #include <locale> #include <cassert> diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp index 9ed3d138112a..650713570153 100644 --- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp @@ -15,9 +15,6 @@ // const charT* toupper(charT* low, const charT* high) const; -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - #include <locale> #include <string> #include <cassert> diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp index ec563fe4c7bc..7776c67a6be2 100644 --- a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp +++ b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp @@ -7,7 +7,8 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: apple-darwin +// This test is passing in an uncontrolled manner in some Apple environment. +// UNSUPPORTED: apple-darwin // Failure related to GLIBC's use of U00A0 as mon_thousands_sep // and U002E as mon_decimal_point. diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp index 54bfcfb5c88d..4d805b0f7adf 100644 --- a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp +++ b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp @@ -7,7 +7,8 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: apple-darwin +// This test is passing in an uncontrolled manner in some Apple environment. +// UNSUPPORTED: apple-darwin // Failure related to GLIBC's use of U00A0 as mon_thousands_sep // and U002E as mon_decimal_point. diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp index 72e351f580b4..323d856a3923 100644 --- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp +++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp @@ -9,8 +9,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // <locale> diff --git a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp index 272199b0e0d9..e3367b26fa9e 100644 --- a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp +++ b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp @@ -7,8 +7,10 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7 +// PR15445 +// XFAIL: with_system_cxx_lib=macosx10.8 // <locale> diff --git a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp index d01f63d5920d..174312d09c94 100644 --- a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp +++ b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp @@ -6,6 +6,9 @@ // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// +// +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7 // <locale> @@ -194,4 +197,16 @@ int main() assert(v == -HUGE_VALF); } + { + v = -1; + const char str[] = "2-"; + std::ios_base::iostate err = ios.goodbit; + input_iterator<const char*> iter = + f.get(input_iterator<const char*>(str), + input_iterator<const char*>(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+1); + assert(err == ios.goodbit); + assert(v == 2); + } } diff --git a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp index b79650b0199b..cf671b000c9c 100644 --- a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp +++ b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp @@ -6,6 +6,9 @@ // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// +// +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7 // <locale> @@ -253,4 +256,16 @@ int main() assert(err == ios.failbit); assert(v == -HUGE_VALL); } + { + v = -1; + const char str[] = "2-"; + std::ios_base::iostate err = ios.goodbit; + input_iterator<const char*> iter = + f.get(input_iterator<const char*>(str), + input_iterator<const char*>(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+1); + assert(err == ios.goodbit); + assert(v == 2); + } } diff --git a/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp index eb381f9a580d..e25fe389392d 100644 --- a/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp +++ b/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp @@ -9,6 +9,10 @@ // REQUIRES: locale.en_US.UTF-8 // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // <locale> diff --git a/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp index f1afff66580e..72d47a3914f3 100644 --- a/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp +++ b/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp @@ -9,6 +9,10 @@ // REQUIRES: locale.en_US.UTF-8 // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // <locale> diff --git a/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp index eb63cd03b663..26ddfa600ea5 100644 --- a/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp +++ b/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp @@ -9,6 +9,10 @@ // REQUIRES: locale.en_US.UTF-8 // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // <locale> diff --git a/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp b/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp index 11346fb402d2..8fc311a5bd80 100644 --- a/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp +++ b/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp @@ -9,8 +9,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <locale> diff --git a/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp b/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp index 24644e307799..4d866acb8f43 100644 --- a/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp +++ b/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 + // <complex> // template<class T, class charT, class traits> diff --git a/test/std/numerics/rand/rand.device/ctor.pass.cpp b/test/std/numerics/rand/rand.device/ctor.pass.cpp index 730576844a0b..5d72e474ed89 100644 --- a/test/std/numerics/rand/rand.device/ctor.pass.cpp +++ b/test/std/numerics/rand/rand.device/ctor.pass.cpp @@ -7,6 +7,14 @@ // //===----------------------------------------------------------------------===// +// See bugs.llvm.org/PR20183 +// +// 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.8 +// XFAIL: with_system_cxx_lib=macosx10.7 + // <random> // class random_device; diff --git a/test/std/numerics/rand/rand.device/eval.pass.cpp b/test/std/numerics/rand/rand.device/eval.pass.cpp index 890f4caa31a7..b34e40c75273 100644 --- a/test/std/numerics/rand/rand.device/eval.pass.cpp +++ b/test/std/numerics/rand/rand.device/eval.pass.cpp @@ -7,6 +7,14 @@ // //===----------------------------------------------------------------------===// +// See bugs.llvm.org/PR20183 +// +// 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.8 +// XFAIL: with_system_cxx_lib=macosx10.7 + // <random> // class random_device; diff --git a/test/std/re/re.alg/re.alg.match/awk.pass.cpp b/test/std/re/re.alg/re.alg.match/awk.pass.cpp index 9bd213f96746..4fc1ea7fe959 100644 --- a/test/std/re/re.alg/re.alg.match/awk.pass.cpp +++ b/test/std/re/re.alg/re.alg.match/awk.pass.cpp @@ -620,7 +620,7 @@ int main() { std::cmatch m; const char s[] = "m"; - assert(std::regex_match(s, m, + assert(std::regex_match(s, m, std::regex("[a[=M=]z]", std::regex_constants::awk))); assert(m.size() == 1); assert(!m.prefix().matched); diff --git a/test/std/re/re.traits/translate_nocase.pass.cpp b/test/std/re/re.traits/translate_nocase.pass.cpp index ab73db79d97f..33d365a9ede3 100644 --- a/test/std/re/re.traits/translate_nocase.pass.cpp +++ b/test/std/re/re.traits/translate_nocase.pass.cpp @@ -16,8 +16,8 @@ // REQUIRES: locale.en_US.UTF-8 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // TODO: investigation needed // XFAIL: linux-gnu diff --git a/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp b/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp index 59267f245d82..f36f53e656db 100644 --- a/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp +++ b/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp @@ -8,6 +8,12 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: libcpp-no-exceptions +// 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.8 +// XFAIL: with_system_cxx_lib=macosx10.7 + // <string> // size_type max_size() const; diff --git a/test/std/strings/string.conversions/stof.pass.cpp b/test/std/strings/string.conversions/stof.pass.cpp index aeef0ddfbc78..a5e587236e27 100644 --- a/test/std/strings/string.conversions/stof.pass.cpp +++ b/test/std/strings/string.conversions/stof.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // <string> diff --git a/test/std/strings/string.conversions/stol.pass.cpp b/test/std/strings/string.conversions/stol.pass.cpp index f01bbf8ce29e..5e16735dcc8f 100644 --- a/test/std/strings/string.conversions/stol.pass.cpp +++ b/test/std/strings/string.conversions/stol.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // <string> diff --git a/test/std/strings/string.conversions/stoll.pass.cpp b/test/std/strings/string.conversions/stoll.pass.cpp index b823ab742626..c33f9ee5e86f 100644 --- a/test/std/strings/string.conversions/stoll.pass.cpp +++ b/test/std/strings/string.conversions/stoll.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // <string> diff --git a/test/std/strings/string.conversions/stoul.pass.cpp b/test/std/strings/string.conversions/stoul.pass.cpp index 5e1f696cb6b7..523c49a29de4 100644 --- a/test/std/strings/string.conversions/stoul.pass.cpp +++ b/test/std/strings/string.conversions/stoul.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // <string> diff --git a/test/std/strings/string.conversions/stoull.pass.cpp b/test/std/strings/string.conversions/stoull.pass.cpp index 70563d9be51f..549c8da9a358 100644 --- a/test/std/strings/string.conversions/stoull.pass.cpp +++ b/test/std/strings/string.conversions/stoull.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // <string> diff --git a/test/std/thread/futures/futures.future_error/what.pass.cpp b/test/std/thread/futures/futures.future_error/what.pass.cpp index cc2d978d2c2b..957d530ab2ac 100644 --- a/test/std/thread/futures/futures.future_error/what.pass.cpp +++ b/test/std/thread/futures/futures.future_error/what.pass.cpp @@ -12,9 +12,11 @@ // LWG 2056 changed the values of future_errc, so if we're using new headers // with an old library we'll get incorrect messages. // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -// XFAIL: with_system_cxx_lib=x86_64-apple-darwin13 +// 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 // <future> diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp b/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp index fffd087ee877..97f9d07c1512 100644 --- a/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp @@ -52,7 +52,7 @@ int main() std::this_thread::sleep_for(ms(250)); m.unlock(); t.join(); - + #ifdef __cpp_deduction_guides std::lock_guard lg(m); static_assert((std::is_same<decltype(lg), std::lock_guard<decltype(m)>>::value), "" ); diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp b/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp index ef39bbcc5e88..cdf3ceeb615c 100644 --- a/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp @@ -150,6 +150,6 @@ int main() std::scoped_lock sl{m1, m2, m3}; static_assert((std::is_same<decltype(sl), std::scoped_lock<decltype(m1), decltype(m2), decltype(m3)>>::value), "" ); } - } + } #endif } diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg new file mode 100644 index 000000000000..fd3dc778c8ce --- /dev/null +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg @@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True diff --git a/test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg b/test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg new file mode 100644 index 000000000000..fd3dc778c8ce --- /dev/null +++ b/test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg @@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True diff --git a/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg b/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg new file mode 100644 index 000000000000..fd3dc778c8ce --- /dev/null +++ b/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg @@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True diff --git a/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp b/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp index 27e1d2a1d42f..891b084dd32e 100644 --- a/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp +++ b/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp @@ -9,6 +9,18 @@ // // UNSUPPORTED: libcpp-has-no-threads +// This test uses the POSIX header <sys/time.h> which Windows doesn't provide +// UNSUPPORTED: windows + +// This test depends on signal behaviour until r210210, so some system libs +// don't pass. +// +// 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.8 +// XFAIL: with_system_cxx_lib=macosx10.7 + // <thread> // template <class Rep, class Period> @@ -23,6 +35,7 @@ void sig_action(int) {} +#include <iostream> int main() { int ec; diff --git a/test/std/utilities/any/any.class/any.assign/copy.pass.cpp b/test/std/utilities/any/any.class/any.assign/copy.pass.cpp index eba9bc6d5feb..37618f7aafc7 100644 --- a/test/std/utilities/any/any.class/any.assign/copy.pass.cpp +++ b/test/std/utilities/any/any.class/any.assign/copy.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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& operator=(any const &); diff --git a/test/std/utilities/any/any.class/any.assign/move.pass.cpp b/test/std/utilities/any/any.class/any.assign/move.pass.cpp index 2063e4f1e9f1..418f200beb7a 100644 --- a/test/std/utilities/any/any.class/any.assign/move.pass.cpp +++ b/test/std/utilities/any/any.class/any.assign/move.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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& operator=(any &&); diff --git a/test/std/utilities/any/any.class/any.assign/value.pass.cpp b/test/std/utilities/any/any.class/any.assign/value.pass.cpp index 6af481714922..ddedb886cc04 100644 --- a/test/std/utilities/any/any.class/any.assign/value.pass.cpp +++ b/test/std/utilities/any/any.class/any.assign/value.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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> // template <class ValueType> diff --git a/test/std/utilities/any/any.class/any.cons/copy.pass.cpp b/test/std/utilities/any/any.class/any.cons/copy.pass.cpp index 021c9e452841..aceb9e6cf3d5 100644 --- a/test/std/utilities/any/any.class/any.cons/copy.pass.cpp +++ b/test/std/utilities/any/any.class/any.cons/copy.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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(any const &); diff --git a/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp b/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp index 4cf5d914f31d..d01a88da5dfc 100644 --- a/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp +++ b/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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> // template <class T, class ...Args> any(in_place_type_t<T>, Args&&...); diff --git a/test/std/utilities/any/any.class/any.cons/move.pass.cpp b/test/std/utilities/any/any.class/any.cons/move.pass.cpp index fb7dda886fe7..09e9288e0ab3 100644 --- a/test/std/utilities/any/any.class/any.cons/move.pass.cpp +++ b/test/std/utilities/any/any.class/any.cons/move.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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(any &&) noexcept; diff --git a/test/std/utilities/any/any.class/any.cons/value.pass.cpp b/test/std/utilities/any/any.class/any.cons/value.pass.cpp index a164fbeb52fe..d18de0664c77 100644 --- a/test/std/utilities/any/any.class/any.cons/value.pass.cpp +++ b/test/std/utilities/any/any.class/any.cons/value.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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> // template <class Value> any(Value &&) @@ -151,4 +158,4 @@ int main() { test_copy_value_throws<large_throws_on_copy>(); test_move_value_throws(); test_sfinae_constraints(); -}
\ No newline at end of file +} diff --git a/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp b/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp index 7ed6121e5301..789a861ee3d6 100644 --- a/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp +++ b/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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> // template <class T, class ...Args> T& emplace(Args&&...); diff --git a/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp b/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp index 45bc70f7a795..2e781d954e68 100644 --- a/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp +++ b/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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::reset() noexcept diff --git a/test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp b/test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp index 6fc100943d0f..f56a2565622f 100644 --- a/test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp +++ b/test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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::swap(any &) noexcept diff --git a/test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp b/test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp index 1a5a85482b8f..a5fa93218c65 100644 --- a/test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp +++ b/test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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> // template <class ValueType> diff --git a/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp b/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp index af081ecceefd..ed04a91ca406 100644 --- a/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ b/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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> // template <class ValueType> diff --git a/test/std/utilities/any/any.nonmembers/make_any.pass.cpp b/test/std/utilities/any/any.nonmembers/make_any.pass.cpp index 59c06be6aad3..5a4a3c3c189f 100644 --- a/test/std/utilities/any/any.nonmembers/make_any.pass.cpp +++ b/test/std/utilities/any/any.nonmembers/make_any.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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> // template <class T, class ...Args> any make_any(Args&&...); diff --git a/test/std/utilities/any/any.nonmembers/swap.pass.cpp b/test/std/utilities/any/any.nonmembers/swap.pass.cpp index 1b3785bb1c66..c723b6e08149 100644 --- a/test/std/utilities/any/any.nonmembers/swap.pass.cpp +++ b/test/std/utilities/any/any.nonmembers/swap.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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> // void swap(any &, any &) noexcept diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp index d1e13139bce3..4b56a8fb6c7b 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp index 08e31e8d7d70..065a7e90af82 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp index f8f550deb051..2351e9741780 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp index 1ea11ceed43d..e36c8a5a9240 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp index 9a5792f519d5..f1fe28cc1774 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp index aac9af082d74..45cbc5099d0a 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp index fa79e7cdd9ad..b51c6cf08cba 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp index c650899f764a..9f3617a2cadb 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp index cbcc4ddbbc2c..5ae26809fac2 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp index eb5e246833c2..ecba90b71783 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // <memory> diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.ownerless/owner_less.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.ownerless/owner_less.pass.cpp index 7ab60da77c7d..501844a1d6ce 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.ownerless/owner_less.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.ownerless/owner_less.pass.cpp @@ -69,7 +69,7 @@ int main() static_assert((std::is_same<std::shared_ptr<int>, CS::first_argument_type>::value), "" ); static_assert((std::is_same<std::shared_ptr<int>, CS::second_argument_type>::value), "" ); static_assert((std::is_same<bool, CS::result_type>::value), "" ); - + assert(!cs(p1, p2)); assert(!cs(p2, p1)); assert(cs(p1 ,p3) || cs(p3, p1)); diff --git a/test/std/utilities/meta/meta.unary/meta.unary.cat/is_function.pass.cpp b/test/std/utilities/meta/meta.unary/meta.unary.cat/is_function.pass.cpp index c340ba69cda3..4e875fa94520 100644 --- a/test/std/utilities/meta/meta.unary/meta.unary.cat/is_function.pass.cpp +++ b/test/std/utilities/meta/meta.unary/meta.unary.cat/is_function.pass.cpp @@ -16,9 +16,13 @@ #include "test_macros.h" +// NOTE: On Windows the function `test_is_function<void()>` and +// `test_is_function<void() noexcept> has the same mangled despite being +// a distinct instantiation. This causes Clang to emit an error. However +// structs do not have this problem. + template <class T> -void test_is_function() -{ +struct test_is_function { static_assert( std::is_function<T>::value, ""); static_assert( std::is_function<const T>::value, ""); static_assert( std::is_function<volatile T>::value, ""); @@ -29,11 +33,10 @@ void test_is_function() static_assert( std::is_function_v<volatile T>, ""); static_assert( std::is_function_v<const volatile T>, ""); #endif -} +}; template <class T> -void test_is_not_function() -{ +struct test_is_not_function { static_assert(!std::is_function<T>::value, ""); static_assert(!std::is_function<const T>::value, ""); static_assert(!std::is_function<volatile T>::value, ""); @@ -44,7 +47,7 @@ void test_is_not_function() static_assert(!std::is_function_v<volatile T>, ""); static_assert(!std::is_function_v<const volatile T>, ""); #endif -} +}; class Empty { diff --git a/test/std/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer.pass.cpp b/test/std/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer.pass.cpp index 691c549b5e78..f685d71eebd2 100644 --- a/test/std/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer.pass.cpp +++ b/test/std/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer.pass.cpp @@ -14,9 +14,12 @@ #include <type_traits> #include "test_macros.h" +// NOTE: On Windows the function `test_is_member_function<void()>` and +// `test_is_member_function<void() noexcept> has the same mangled despite being +// a distinct instantiation. This causes Clang to emit an error. However +// structs do not have this problem. template <class T> -void test_member_function_pointer_imp() -{ +struct test_member_function_pointer_imp { static_assert(!std::is_void<T>::value, ""); #if TEST_STD_VER > 11 static_assert(!std::is_null_pointer<T>::value, ""); @@ -33,16 +36,16 @@ void test_member_function_pointer_imp() static_assert(!std::is_union<T>::value, ""); static_assert(!std::is_class<T>::value, ""); static_assert(!std::is_function<T>::value, ""); -} +}; template <class T> -void test_member_function_pointer() +struct test_member_function_pointer : + test_member_function_pointer_imp<T>, + test_member_function_pointer_imp<const T>, + test_member_function_pointer_imp<volatile T>, + test_member_function_pointer_imp<const volatile T> { - test_member_function_pointer_imp<T>(); - test_member_function_pointer_imp<const T>(); - test_member_function_pointer_imp<volatile T>(); - test_member_function_pointer_imp<const volatile T>(); -} +}; class Class { diff --git a/test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp b/test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp index e3c7bb5ad27b..198eee62bbba 100644 --- a/test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp +++ b/test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <optional> // class bad_optional_access is default constructible diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp index d068fbc2db7e..e4e4a979ed02 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp @@ -9,6 +9,13 @@ // // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <optional> // template <class U> diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp index 34a12b8ad1c3..e9e98c0bdac6 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp @@ -9,6 +9,13 @@ // // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <optional> // constexpr optional(const T& v); diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/copy.fail.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/copy.fail.cpp index d9e5ca821e85..3224c1bac756 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/copy.fail.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/copy.fail.cpp @@ -11,7 +11,7 @@ // <optional> // constexpr optional(const optional<T>& rhs); -// If is_trivially_copy_constructible_v<T> is true, +// If is_trivially_copy_constructible_v<T> is true, // this constructor shall be a constexpr constructor. #include <optional> @@ -26,7 +26,7 @@ struct S { S(const S &rhs) : v_(rhs.v_) {} // make it not trivially copyable int v_; }; - + int main() { diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/move.fail.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/move.fail.cpp index c7458d95abfd..fb2e139ad591 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/move.fail.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/move.fail.cpp @@ -11,7 +11,7 @@ // <optional> // constexpr optional(const optional<T>&& rhs); -// If is_trivially_move_constructible_v<T> is true, +// If is_trivially_move_constructible_v<T> is true, // this constructor shall be a constexpr constructor. #include <optional> @@ -27,7 +27,7 @@ struct S { constexpr S(const S &&rhs) : v_(rhs.v_) {} // not trivially moveable int v_; }; - + int main() { diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp index bff6f5bf8f6f..9f23e9b4381b 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// 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 + // <optional> // optional(optional<T>&& rhs); diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp index eee749d01707..761cbee4b895 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp @@ -9,6 +9,13 @@ // // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <optional> // constexpr optional(T&& v); diff --git a/test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp index 516a79db5f64..44e6e7305901 100644 --- a/test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// 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 + // <optional> // constexpr T& optional<T>::value() &; diff --git a/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp index d4038e4efa6b..e2d48ec99302 100644 --- a/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// 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 + // <optional> // constexpr const T& optional<T>::value() const &; diff --git a/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp index e189d3af6886..874a5441a4c2 100644 --- a/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// 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 + // <optional> // constexpr const T& optional<T>::value() const &&; diff --git a/test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp index 2ef485b7fe50..60cab7d27c64 100644 --- a/test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> +// 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 + // constexpr T& optional<T>::value() &&; #include <optional> diff --git a/test/std/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp b/test/std/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp index ab623bb01f78..8830bf932924 100644 --- a/test/std/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp @@ -19,6 +19,10 @@ #include "test_macros.h" +#if defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. +#endif + template <std::size_t N> void test_char_pointer_ctor() { diff --git a/test/std/utilities/template.bitset/bitset.cons/default.pass.cpp b/test/std/utilities/template.bitset/bitset.cons/default.pass.cpp index f4f8d390de08..0ebf9b0b6264 100644 --- a/test/std/utilities/template.bitset/bitset.cons/default.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.cons/default.pass.cpp @@ -14,6 +14,10 @@ #include "test_macros.h" +#if defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. +#endif + template <std::size_t N> void test_default_ctor() { diff --git a/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp b/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp index 0e4793027c98..91e9441fe3cb 100644 --- a/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp @@ -16,6 +16,10 @@ #include "test_macros.h" +#if defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. +#endif + template <std::size_t N> void test_string_ctor() { diff --git a/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp b/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp index 3ba88ee2db53..be9d54716c51 100644 --- a/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp @@ -16,6 +16,10 @@ #include "test_macros.h" +#if defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. +#endif + template <std::size_t N> void test_val_ctor() { diff --git a/test/std/utilities/template.bitset/bitset.hash/bitset.pass.cpp b/test/std/utilities/template.bitset/bitset.hash/bitset.pass.cpp index 8eab082cf676..97ab0c44ccff 100644 --- a/test/std/utilities/template.bitset/bitset.hash/bitset.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.hash/bitset.pass.cpp @@ -31,7 +31,7 @@ test() static_assert((std::is_same<typename H::argument_type, T>::value), "" ); static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" ); ASSERT_NOEXCEPT(H()(T())); - + H h; T bs(static_cast<unsigned long long>(N)); const std::size_t result = h(bs); diff --git a/test/std/utilities/template.bitset/bitset.members/count.pass.cpp b/test/std/utilities/template.bitset/bitset.members/count.pass.cpp index c8a14c9b6049..f6730a4fc449 100644 --- a/test/std/utilities/template.bitset/bitset.members/count.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/count.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/flip_all.pass.cpp b/test/std/utilities/template.bitset/bitset.members/flip_all.pass.cpp index a25e5bd9da22..6d6bcd711622 100644 --- a/test/std/utilities/template.bitset/bitset.members/flip_all.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/flip_all.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/flip_one.pass.cpp b/test/std/utilities/template.bitset/bitset.members/flip_one.pass.cpp index 18a64a214a45..9908811cf3d2 100644 --- a/test/std/utilities/template.bitset/bitset.members/flip_one.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/flip_one.pass.cpp @@ -15,6 +15,10 @@ #include "test_macros.h" +#if defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. +#endif + template <std::size_t N> std::bitset<N> make_bitset() diff --git a/test/std/utilities/template.bitset/bitset.members/index.pass.cpp b/test/std/utilities/template.bitset/bitset.members/index.pass.cpp index f352475fc199..c29ba312af7b 100644 --- a/test/std/utilities/template.bitset/bitset.members/index.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/index.pass.cpp @@ -14,8 +14,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/index_const.pass.cpp b/test/std/utilities/template.bitset/bitset.members/index_const.pass.cpp index fbde54859f19..1ac0495da777 100644 --- a/test/std/utilities/template.bitset/bitset.members/index_const.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/index_const.pass.cpp @@ -14,8 +14,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/left_shift.pass.cpp b/test/std/utilities/template.bitset/bitset.members/left_shift.pass.cpp index 57b77d2570d5..9d630b9721ac 100644 --- a/test/std/utilities/template.bitset/bitset.members/left_shift.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/left_shift.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp b/test/std/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp index 3adab77b4131..bbbddb9a2289 100644 --- a/test/std/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/not_all.pass.cpp b/test/std/utilities/template.bitset/bitset.members/not_all.pass.cpp index d9fbb3e11dad..4f152e3f9147 100644 --- a/test/std/utilities/template.bitset/bitset.members/not_all.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/not_all.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp b/test/std/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp index 64ca15fda137..eaac19124224 100644 --- a/test/std/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp b/test/std/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp index 5b7e10d677ee..52157696e22f 100644 --- a/test/std/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp @@ -17,8 +17,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp b/test/std/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp index f2880f67ab6e..98c7ce509173 100644 --- a/test/std/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp b/test/std/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp index 420996759d0d..a707a7f4d112 100644 --- a/test/std/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/reset_all.pass.cpp b/test/std/utilities/template.bitset/bitset.members/reset_all.pass.cpp index eed25e27448d..69de45e0396e 100644 --- a/test/std/utilities/template.bitset/bitset.members/reset_all.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/reset_all.pass.cpp @@ -12,8 +12,12 @@ #include <bitset> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/right_shift.pass.cpp b/test/std/utilities/template.bitset/bitset.members/right_shift.pass.cpp index 180fa84f4488..554abde32bba 100644 --- a/test/std/utilities/template.bitset/bitset.members/right_shift.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/right_shift.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp b/test/std/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp index 47494fc459a5..8e5edbe38a03 100644 --- a/test/std/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/set_all.pass.cpp b/test/std/utilities/template.bitset/bitset.members/set_all.pass.cpp index e5c3e25352cc..45bc2b9ca37e 100644 --- a/test/std/utilities/template.bitset/bitset.members/set_all.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/set_all.pass.cpp @@ -12,8 +12,12 @@ #include <bitset> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.members/test.pass.cpp b/test/std/utilities/template.bitset/bitset.members/test.pass.cpp index 1a2d70613e1f..084dc9f8d46f 100644 --- a/test/std/utilities/template.bitset/bitset.members/test.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/test.pass.cpp @@ -15,6 +15,10 @@ #include "test_macros.h" +#if defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. +#endif + template <std::size_t N> std::bitset<N> make_bitset() diff --git a/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp b/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp index 5b2958cca523..37824d81b5a7 100644 --- a/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp @@ -26,8 +26,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.operators/op_and.pass.cpp b/test/std/utilities/template.bitset/bitset.operators/op_and.pass.cpp index d86a10c6df13..e58c72016eee 100644 --- a/test/std/utilities/template.bitset/bitset.operators/op_and.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.operators/op_and.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.operators/op_not.pass.cpp b/test/std/utilities/template.bitset/bitset.operators/op_not.pass.cpp index 0a8024d5eb9b..244a2ba541d2 100644 --- a/test/std/utilities/template.bitset/bitset.operators/op_not.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.operators/op_not.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/template.bitset/bitset.operators/op_or.pass.cpp b/test/std/utilities/template.bitset/bitset.operators/op_or.pass.cpp index 449115edd757..e601b26cf4c1 100644 --- a/test/std/utilities/template.bitset/bitset.operators/op_or.pass.cpp +++ b/test/std/utilities/template.bitset/bitset.operators/op_or.pass.cpp @@ -13,8 +13,12 @@ #include <cstdlib> #include <cassert> -#if defined(__clang__) +#include "test_macros.h" + +#if defined(TEST_COMPILER_CLANG) #pragma clang diagnostic ignored "-Wtautological-compare" +#elif defined(TEST_COMPILER_C1XX) +#pragma warning(disable: 6294) // Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. #endif template <std::size_t N> diff --git a/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp b/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp index bf2a2e589137..24847dd70f86 100644 --- a/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp +++ b/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp @@ -7,15 +7,15 @@ // //===----------------------------------------------------------------------===// // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - // Due to C++17 inline variables ASAN flags this test as containing an ODR // violation because Clock::is_steady is defined in both the dylib and this TU. // UNSUPPORTED: asan +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) + // <chrono> // high_resolution_clock diff --git a/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp b/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp index b836c0dc00e6..cdb38dfce3f5 100644 --- a/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp +++ b/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp @@ -7,16 +7,17 @@ // //===----------------------------------------------------------------------===// // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 // UNSUPPORTED: libcpp-has-no-monotonic-clock // Due to C++17 inline variables ASAN flags this test as containing an ODR // violation because Clock::is_steady is defined in both the dylib and this TU. // UNSUPPORTED: asan +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) + // <chrono> // steady_clock diff --git a/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp b/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp index a4058e5ab97b..dfc08a3bca69 100644 --- a/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp +++ b/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp @@ -7,15 +7,15 @@ // //===----------------------------------------------------------------------===// // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - // Due to C++17 inline variables ASAN flags this test as containing an ODR // violation because Clock::is_steady is defined in both the dylib and this TU. // UNSUPPORTED: asan +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) + // <chrono> // system_clock diff --git a/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp b/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp index 77fd1719ff33..5b0f15ecbb12 100644 --- a/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp +++ b/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> /* diff --git a/test/std/utilities/variant/variant.get/get_index.pass.cpp b/test/std/utilities/variant/variant.get/get_index.pass.cpp index bc7a566040eb..4f04f4a399d7 100644 --- a/test/std/utilities/variant/variant.get/get_index.pass.cpp +++ b/test/std/utilities/variant/variant.get/get_index.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <size_t I, class... Types> diff --git a/test/std/utilities/variant/variant.get/get_type.pass.cpp b/test/std/utilities/variant/variant.get/get_type.pass.cpp index 013a081f5c77..63221f69c8f8 100644 --- a/test/std/utilities/variant/variant.get/get_type.pass.cpp +++ b/test/std/utilities/variant/variant.get/get_type.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class T, class... Types> constexpr T& get(variant<Types...>& v); diff --git a/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp index 10022b14aa06..dd5880ea6635 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp index d92f16fd6418..4f0009d9d620 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp index 232d77c882eb..c1ba87be76d1 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp index 18216c6da923..a695df14ef62 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; @@ -21,6 +28,7 @@ #include <variant> #include "test_macros.h" +#include "test_workarounds.h" struct NonT { NonT(int v) : value(v) {} @@ -137,14 +145,21 @@ constexpr bool test_constexpr_copy_ctor_extension_imp( auto v2 = v; return v2.index() == v.index() && v2.index() == Idx && - std::get<Idx>(v2) == std::get<Idx>(v); + std::get<Idx>(v2) == std::get<Idx>(v); } void test_constexpr_copy_ctor_extension() { -#ifdef _LIBCPP_VERSION +#if defined(_LIBCPP_VER) || defined(_MSVC_STL_VER) using V = std::variant<long, void*, const int>; - static_assert(std::is_trivially_copyable<V>::value, ""); +#ifdef TEST_WORKAROUND_C1XX_BROKEN_IS_TRIVIALLY_COPYABLE + static_assert(std::is_trivially_destructible<V>::value, ""); static_assert(std::is_trivially_copy_constructible<V>::value, ""); + static_assert(std::is_trivially_move_constructible<V>::value, ""); + static_assert(!std::is_copy_assignable<V>::value, ""); + static_assert(!std::is_move_assignable<V>::value, ""); +#else + static_assert(std::is_trivially_copyable<V>::value, ""); +#endif static_assert(test_constexpr_copy_ctor_extension_imp<0>(V(42l)), ""); static_assert(test_constexpr_copy_ctor_extension_imp<1>(V(nullptr)), ""); static_assert(test_constexpr_copy_ctor_extension_imp<2>(V(101)), ""); diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp index a4a86ff6c1ca..05a09db45bdf 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp index 18115722f8d1..af6c66213039 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp index a023f02bad6e..ec2730e8740c 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp index 66f67fe8d3f2..b8ca6f9ef27a 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; @@ -22,6 +29,7 @@ #include <variant> #include "test_macros.h" +#include "test_workarounds.h" struct ThrowsMove { ThrowsMove(ThrowsMove &&) noexcept(false) {} @@ -178,9 +186,17 @@ constexpr bool test_constexpr_ctor_extension_imp( } void test_constexpr_move_ctor_extension() { -#ifdef _LIBCPP_VERSION +#if defined(_LIBCPP_VER) || defined(_MSVC_STL_VER) using V = std::variant<long, void*, const int>; +#ifdef TEST_WORKAROUND_C1XX_BROKEN_IS_TRIVIALLY_COPYABLE + static_assert(std::is_trivially_destructible<V>::value, ""); + static_assert(std::is_trivially_copy_constructible<V>::value, ""); + static_assert(std::is_trivially_move_constructible<V>::value, ""); + static_assert(!std::is_copy_assignable<V>::value, ""); + static_assert(!std::is_move_assignable<V>::value, ""); +#else static_assert(std::is_trivially_copyable<V>::value, ""); +#endif static_assert(std::is_trivially_move_constructible<V>::value, ""); static_assert(test_constexpr_ctor_extension_imp<0>(V(42l)), ""); static_assert(test_constexpr_ctor_extension_imp<1>(V(nullptr)), ""); diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp index 0d0b978e3959..20848db0fc70 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp index e69988a08e96..28a0c582853b 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp index 8e329024b9df..923ffd33a75c 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp index da1658cb88f6..c01d333441a9 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp b/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp index 48cda222083f..b81b3ff6a967 100644 --- a/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.visit/visit.pass.cpp b/test/std/utilities/variant/variant.visit/visit.pass.cpp index 408a65c0903f..05b58c16f3d8 100644 --- a/test/std/utilities/variant/variant.visit/visit.pass.cpp +++ b/test/std/utilities/variant/variant.visit/visit.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// 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 + // <variant> // template <class Visitor, class... Variants> // constexpr see below visit(Visitor&& vis, Variants&&... vars); |
