From 51349536aafb75735d478f7ac177b9a282783bce Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Tue, 8 Jul 2014 15:19:40 +0000 Subject: [PATCH] Fix some failing tests for the standard containers. The tests were failing in 32-bit mode because they assumed that std::size_type and make_unsigned::type were always the same type. No change to libc++, just the tests. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@212538 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../containers/associative/map/types.pass.cpp | 47 ++++++++++--------- .../associative/multimap/types.pass.cpp | 47 ++++++++++--------- .../associative/multiset/types.pass.cpp | 47 ++++++++++--------- .../containers/associative/set/types.pass.cpp | 47 ++++++++++--------- .../deque/deque.capacity/resize_size.pass.cpp | 2 +- .../deque.capacity/resize_size_value.pass.cpp | 2 +- .../containers/sequences/deque/types.pass.cpp | 3 +- .../sequences/forwardlist/types.pass.cpp | 39 ++++++++------- .../containers/unord/unord.map/types.pass.cpp | 3 +- .../unord/unord.multimap/types.pass.cpp | 3 +- .../unord/unord.multiset/types.pass.cpp | 3 +- .../containers/unord/unord.set/types.pass.cpp | 3 +- 12 files changed, 135 insertions(+), 111 deletions(-) diff --git a/test/containers/associative/map/types.pass.cpp b/test/containers/associative/map/types.pass.cpp index 487b69f8c..d117deff6 100644 --- a/test/containers/associative/map/types.pass.cpp +++ b/test/containers/associative/map/types.pass.cpp @@ -37,31 +37,34 @@ int main() { { - static_assert((std::is_same::key_type, int>::value), ""); - static_assert((std::is_same::mapped_type, double>::value), ""); - static_assert((std::is_same::value_type, std::pair >::value), ""); - static_assert((std::is_same::key_compare, std::less >::value), ""); - static_assert((std::is_same::allocator_type, std::allocator > >::value), ""); - static_assert((std::is_same::reference, std::pair&>::value), ""); - static_assert((std::is_same::const_reference, const std::pair&>::value), ""); - static_assert((std::is_same::pointer, std::pair*>::value), ""); - static_assert((std::is_same::const_pointer, const std::pair*>::value), ""); - static_assert((std::is_same::size_type, std::size_t>::value), ""); - static_assert((std::is_same::difference_type, std::ptrdiff_t>::value), ""); + typedef std::map C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same > >::value), ""); + static_assert((std::is_same&>::value), ""); + static_assert((std::is_same&>::value), ""); + static_assert((std::is_same*>::value), ""); + static_assert((std::is_same*>::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); } #if __cplusplus >= 201103L { - static_assert((std::is_same, min_allocator>>::key_type, int>::value), ""); - static_assert((std::is_same, min_allocator>>::mapped_type, double>::value), ""); - static_assert((std::is_same, min_allocator>>::value_type, std::pair >::value), ""); - static_assert((std::is_same, min_allocator>>::key_compare, std::less >::value), ""); - static_assert((std::is_same, min_allocator>>::allocator_type, min_allocator > >::value), ""); - static_assert((std::is_same, min_allocator>>::reference, std::pair&>::value), ""); - static_assert((std::is_same, min_allocator>>::const_reference, const std::pair&>::value), ""); - static_assert((std::is_same, min_allocator>>::pointer, min_pointer>>::value), ""); - static_assert((std::is_same, min_allocator>>::const_pointer, min_pointer>>::value), ""); - static_assert((std::is_same, min_allocator>>::size_type, std::size_t>::value), ""); - static_assert((std::is_same, min_allocator>>::difference_type, std::ptrdiff_t>::value), ""); + typedef std::map, min_allocator>> C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same > >::value), ""); + static_assert((std::is_same&>::value), ""); + static_assert((std::is_same&>::value), ""); + static_assert((std::is_same>>::value), ""); + static_assert((std::is_same>>::value), ""); +// min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); + static_assert((std::is_same::value), ""); } #endif } diff --git a/test/containers/associative/multimap/types.pass.cpp b/test/containers/associative/multimap/types.pass.cpp index 82132f15d..a0f4db056 100644 --- a/test/containers/associative/multimap/types.pass.cpp +++ b/test/containers/associative/multimap/types.pass.cpp @@ -37,31 +37,34 @@ int main() { { - static_assert((std::is_same::key_type, int>::value), ""); - static_assert((std::is_same::mapped_type, double>::value), ""); - static_assert((std::is_same::value_type, std::pair >::value), ""); - static_assert((std::is_same::key_compare, std::less >::value), ""); - static_assert((std::is_same::allocator_type, std::allocator > >::value), ""); - static_assert((std::is_same::reference, std::pair&>::value), ""); - static_assert((std::is_same::const_reference, const std::pair&>::value), ""); - static_assert((std::is_same::pointer, std::pair*>::value), ""); - static_assert((std::is_same::const_pointer, const std::pair*>::value), ""); - static_assert((std::is_same::size_type, std::size_t>::value), ""); - static_assert((std::is_same::difference_type, std::ptrdiff_t>::value), ""); + typedef std::multimap C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same > >::value), ""); + static_assert((std::is_same&>::value), ""); + static_assert((std::is_same&>::value), ""); + static_assert((std::is_same*>::value), ""); + static_assert((std::is_same*>::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); } #if __cplusplus >= 201103L { - static_assert((std::is_same, min_allocator>>::key_type, int>::value), ""); - static_assert((std::is_same, min_allocator>>::mapped_type, double>::value), ""); - static_assert((std::is_same, min_allocator>>::value_type, std::pair >::value), ""); - static_assert((std::is_same, min_allocator>>::key_compare, std::less >::value), ""); - static_assert((std::is_same, min_allocator>>::allocator_type, min_allocator > >::value), ""); - static_assert((std::is_same, min_allocator>>::reference, std::pair&>::value), ""); - static_assert((std::is_same, min_allocator>>::const_reference, const std::pair&>::value), ""); - static_assert((std::is_same, min_allocator>>::pointer, min_pointer>>::value), ""); - static_assert((std::is_same, min_allocator>>::const_pointer, min_pointer>>::value), ""); - static_assert((std::is_same, min_allocator>>::size_type, std::size_t>::value), ""); - static_assert((std::is_same, min_allocator>>::difference_type, std::ptrdiff_t>::value), ""); + typedef std::multimap, min_allocator>> C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same > >::value), ""); + static_assert((std::is_same&>::value), ""); + static_assert((std::is_same&>::value), ""); + static_assert((std::is_same>>::value), ""); + static_assert((std::is_same>>::value), ""); +// min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); + static_assert((std::is_same::value), ""); } #endif } diff --git a/test/containers/associative/multiset/types.pass.cpp b/test/containers/associative/multiset/types.pass.cpp index da9c8d6b5..e1e3ad910 100644 --- a/test/containers/associative/multiset/types.pass.cpp +++ b/test/containers/associative/multiset/types.pass.cpp @@ -37,31 +37,34 @@ int main() { { - static_assert((std::is_same::key_type, int>::value), ""); - static_assert((std::is_same::value_type, int>::value), ""); - static_assert((std::is_same::key_compare, std::less >::value), ""); - static_assert((std::is_same::value_compare, std::less >::value), ""); - static_assert((std::is_same::allocator_type, std::allocator >::value), ""); - static_assert((std::is_same::reference, int&>::value), ""); - static_assert((std::is_same::const_reference, const int&>::value), ""); - static_assert((std::is_same::pointer, int*>::value), ""); - static_assert((std::is_same::const_pointer, const int*>::value), ""); - static_assert((std::is_same::size_type, std::size_t>::value), ""); - static_assert((std::is_same::difference_type, std::ptrdiff_t>::value), ""); + typedef std::multiset C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); } #if __cplusplus >= 201103L { - static_assert((std::is_same, min_allocator>::key_type, int>::value), ""); - static_assert((std::is_same, min_allocator>::value_type, int>::value), ""); - static_assert((std::is_same, min_allocator>::key_compare, std::less >::value), ""); - static_assert((std::is_same, min_allocator>::value_compare, std::less >::value), ""); - static_assert((std::is_same, min_allocator>::allocator_type, min_allocator>::value), ""); - static_assert((std::is_same, min_allocator>::reference, int&>::value), ""); - static_assert((std::is_same, min_allocator>::const_reference, const int&>::value), ""); - static_assert((std::is_same, min_allocator>::pointer, min_pointer>::value), ""); - static_assert((std::is_same, min_allocator>::const_pointer, min_pointer>::value), ""); - static_assert((std::is_same, min_allocator>::size_type, std::size_t>::value), ""); - static_assert((std::is_same, min_allocator>::difference_type, std::ptrdiff_t>::value), ""); + typedef std::multiset, min_allocator> C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same>::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same>::value), ""); + static_assert((std::is_same>::value), ""); +// min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); + static_assert((std::is_same::value), ""); } #endif } diff --git a/test/containers/associative/set/types.pass.cpp b/test/containers/associative/set/types.pass.cpp index 8d7bb68f0..3362c42ae 100644 --- a/test/containers/associative/set/types.pass.cpp +++ b/test/containers/associative/set/types.pass.cpp @@ -37,31 +37,34 @@ int main() { { - static_assert((std::is_same::key_type, int>::value), ""); - static_assert((std::is_same::value_type, int>::value), ""); - static_assert((std::is_same::key_compare, std::less >::value), ""); - static_assert((std::is_same::value_compare, std::less >::value), ""); - static_assert((std::is_same::allocator_type, std::allocator >::value), ""); - static_assert((std::is_same::reference, int&>::value), ""); - static_assert((std::is_same::const_reference, const int&>::value), ""); - static_assert((std::is_same::pointer, int*>::value), ""); - static_assert((std::is_same::const_pointer, const int*>::value), ""); - static_assert((std::is_same::size_type, std::size_t>::value), ""); - static_assert((std::is_same::difference_type, std::ptrdiff_t>::value), ""); + typedef std::set C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); } #if __cplusplus >= 201103L { - static_assert((std::is_same, min_allocator>::key_type, int>::value), ""); - static_assert((std::is_same, min_allocator>::value_type, int>::value), ""); - static_assert((std::is_same, min_allocator>::key_compare, std::less >::value), ""); - static_assert((std::is_same, min_allocator>::value_compare, std::less >::value), ""); - static_assert((std::is_same, min_allocator>::allocator_type, min_allocator >::value), ""); - static_assert((std::is_same, min_allocator>::reference, int&>::value), ""); - static_assert((std::is_same, min_allocator>::const_reference, const int&>::value), ""); - static_assert((std::is_same, min_allocator>::pointer, min_pointer>::value), ""); - static_assert((std::is_same, min_allocator>::const_pointer, min_pointer>::value), ""); - static_assert((std::is_same, min_allocator>::size_type, std::size_t>::value), ""); - static_assert((std::is_same, min_allocator>::difference_type, std::ptrdiff_t>::value), ""); + typedef std::set, min_allocator> C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same>::value), ""); + static_assert((std::is_same>::value), ""); +// min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); + static_assert((std::is_same::value), ""); } #endif } diff --git a/test/containers/sequences/deque/deque.capacity/resize_size.pass.cpp b/test/containers/sequences/deque/deque.capacity/resize_size.pass.cpp index 15f49df39..8f732a06c 100644 --- a/test/containers/sequences/deque/deque.capacity/resize_size.pass.cpp +++ b/test/containers/sequences/deque/deque.capacity/resize_size.pass.cpp @@ -43,7 +43,7 @@ void test(C& c1, int size) { typedef typename C::const_iterator CI; - std::size_t c1_osize = c1.size(); + typename C::size_type c1_osize = c1.size(); c1.resize(size); assert(c1.size() == size); assert(distance(c1.begin(), c1.end()) == c1.size()); diff --git a/test/containers/sequences/deque/deque.capacity/resize_size_value.pass.cpp b/test/containers/sequences/deque/deque.capacity/resize_size_value.pass.cpp index 727b5d5d8..1d1522cbc 100644 --- a/test/containers/sequences/deque/deque.capacity/resize_size_value.pass.cpp +++ b/test/containers/sequences/deque/deque.capacity/resize_size_value.pass.cpp @@ -43,7 +43,7 @@ void test(C& c1, int size, int x) { typedef typename C::const_iterator CI; - std::size_t c1_osize = c1.size(); + typename C::size_type c1_osize = c1.size(); c1.resize(size, x); assert(c1.size() == size); assert(distance(c1.begin(), c1.end()) == c1.size()); diff --git a/test/containers/sequences/deque/types.pass.cpp b/test/containers/sequences/deque/types.pass.cpp index d32b65c90..da9470d8a 100644 --- a/test/containers/sequences/deque/types.pass.cpp +++ b/test/containers/sequences/deque/types.pass.cpp @@ -82,7 +82,8 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same>::value), ""); static_assert((std::is_same>::value), ""); - static_assert((std::is_same::value), ""); +// min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); static_assert((std::is_same::value), ""); } #endif diff --git a/test/containers/sequences/forwardlist/types.pass.cpp b/test/containers/sequences/forwardlist/types.pass.cpp index 68cebf978..c95548710 100644 --- a/test/containers/sequences/forwardlist/types.pass.cpp +++ b/test/containers/sequences/forwardlist/types.pass.cpp @@ -32,22 +32,29 @@ int main() { - static_assert((std::is_same::value_type, char>::value), ""); - static_assert((std::is_same::allocator_type, std::allocator >::value), ""); - static_assert((std::is_same::reference, char&>::value), ""); - static_assert((std::is_same::const_reference, const char&>::value), ""); - static_assert((std::is_same::pointer, char*>::value), ""); - static_assert((std::is_same::const_pointer, const char*>::value), ""); - static_assert((std::is_same::size_type, std::size_t>::value), ""); - static_assert((std::is_same::difference_type, std::ptrdiff_t>::value), ""); + { + typedef std::forward_list C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + } #if __cplusplus >= 201103L - static_assert((std::is_same>::value_type, char>::value), ""); - static_assert((std::is_same>::allocator_type, min_allocator >::value), ""); - static_assert((std::is_same>::reference, char&>::value), ""); - static_assert((std::is_same>::const_reference, const char&>::value), ""); - static_assert((std::is_same>::pointer, min_pointer>::value), ""); - static_assert((std::is_same>::const_pointer, min_pointer>::value), ""); - static_assert((std::is_same>::size_type, std::size_t>::value), ""); - static_assert((std::is_same>::difference_type, std::ptrdiff_t>::value), ""); + { + typedef std::forward_list> C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same>::value), ""); + static_assert((std::is_same>::value), ""); +// min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); + static_assert((std::is_same::value), ""); + } #endif } diff --git a/test/containers/unord/unord.map/types.pass.cpp b/test/containers/unord/unord.map/types.pass.cpp index 2f3eab151..b53ff8e15 100644 --- a/test/containers/unord/unord.map/types.pass.cpp +++ b/test/containers/unord/unord.map/types.pass.cpp @@ -64,7 +64,8 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same>::value), ""); static_assert((std::is_same>::value), ""); - static_assert((std::is_same::value), ""); + // min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); static_assert((std::is_same::value), ""); } #endif diff --git a/test/containers/unord/unord.multimap/types.pass.cpp b/test/containers/unord/unord.multimap/types.pass.cpp index 5235415c4..55ae74974 100644 --- a/test/containers/unord/unord.multimap/types.pass.cpp +++ b/test/containers/unord/unord.multimap/types.pass.cpp @@ -64,7 +64,8 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same>::value), ""); static_assert((std::is_same>::value), ""); - static_assert((std::is_same::value), ""); + // min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); static_assert((std::is_same::value), ""); } #endif diff --git a/test/containers/unord/unord.multiset/types.pass.cpp b/test/containers/unord/unord.multiset/types.pass.cpp index 82b403daa..5222222d8 100644 --- a/test/containers/unord/unord.multiset/types.pass.cpp +++ b/test/containers/unord/unord.multiset/types.pass.cpp @@ -61,7 +61,8 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same>::value), ""); static_assert((std::is_same>::value), ""); - static_assert((std::is_same::value), ""); + // min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); static_assert((std::is_same::value), ""); } #endif diff --git a/test/containers/unord/unord.set/types.pass.cpp b/test/containers/unord/unord.set/types.pass.cpp index be0b359b2..7e752a434 100644 --- a/test/containers/unord/unord.set/types.pass.cpp +++ b/test/containers/unord/unord.set/types.pass.cpp @@ -61,7 +61,8 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same>::value), ""); static_assert((std::is_same>::value), ""); - static_assert((std::is_same::value), ""); + // min_allocator doesn't have a size_type, so one gets synthesized + static_assert((std::is_same::type>::value), ""); static_assert((std::is_same::value), ""); } #endif