diff options
author | Louis Dionne <ldionne@apple.com> | 2018-11-21 20:53:07 +0000 |
---|---|---|
committer | Louis Dionne <ldionne@apple.com> | 2018-11-21 20:53:07 +0000 |
commit | 91614db033bbb16791ce1e34acd570f4aa7605d0 (patch) | |
tree | a90326f33dccbfe78c60d3e1069b1724e586f96b /libcxx/test/std/containers/sequences | |
parent | 46e3cd76e2afbb14862d552a0331e746742e3f87 (diff) | |
download | bcm5719-llvm-91614db033bbb16791ce1e34acd570f4aa7605d0.tar.gz bcm5719-llvm-91614db033bbb16791ce1e34acd570f4aa7605d0.zip |
[libcxx] Fix incorrect iterator type in vector container test
The iterator types for different specializations of containers with the
same element type but different allocators are not required to be
convertible. This patch makes the test to take the iterator type from
the same container specialization as the created container.
Reviewed as https://reviews.llvm.org/D54806.
Thanks to Andrey Maksimov for the patch.
llvm-svn: 347423
Diffstat (limited to 'libcxx/test/std/containers/sequences')
-rw-r--r-- | libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp b/libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp index 258b9d9f751..b54a96d0bed 100644 --- a/libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp @@ -25,11 +25,12 @@ int main() { { - std::vector<int> v(100); + typedef std::vector<int> V; + V v(100); int a[] = {1, 2, 3, 4, 5}; const int N = sizeof(a)/sizeof(a[0]); - std::vector<int>::iterator i = v.insert(v.cbegin() + 10, input_iterator<const int*>(a), - input_iterator<const int*>(a+N)); + V::iterator i = v.insert(v.cbegin() + 10, input_iterator<const int*>(a), + input_iterator<const int*>(a+N)); assert(v.size() == 100 + N); assert(is_contiguous_container_asan_correct(v)); assert(i == v.begin() + 10); @@ -42,11 +43,12 @@ int main() assert(v[j] == 0); } { - std::vector<int> v(100); + typedef std::vector<int> V; + V v(100); int a[] = {1, 2, 3, 4, 5}; const int N = sizeof(a)/sizeof(a[0]); - std::vector<int>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), - forward_iterator<const int*>(a+N)); + V::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), + forward_iterator<const int*>(a+N)); assert(v.size() == 100 + N); assert(is_contiguous_container_asan_correct(v)); assert(i == v.begin() + 10); @@ -59,13 +61,14 @@ int main() assert(v[j] == 0); } { - std::vector<int> v(100); + typedef std::vector<int> V; + V v(100); while(v.size() < v.capacity()) v.push_back(0); // force reallocation size_t sz = v.size(); int a[] = {1, 2, 3, 4, 5}; const unsigned N = sizeof(a)/sizeof(a[0]); - std::vector<int>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), - forward_iterator<const int*>(a+N)); + V::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), + forward_iterator<const int*>(a+N)); assert(v.size() == sz + N); assert(i == v.begin() + 10); std::size_t j; @@ -77,13 +80,14 @@ int main() assert(v[j] == 0); } { - std::vector<int> v(100); + typedef std::vector<int> V; + V v(100); v.reserve(128); // force no reallocation size_t sz = v.size(); int a[] = {1, 2, 3, 4, 5}; const unsigned N = sizeof(a)/sizeof(a[0]); - std::vector<int>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), - forward_iterator<const int*>(a+N)); + V::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), + forward_iterator<const int*>(a+N)); assert(v.size() == sz + N); assert(i == v.begin() + 10); std::size_t j; @@ -95,11 +99,12 @@ int main() assert(v[j] == 0); } { - std::vector<int, limited_allocator<int, 308> > v(100); + typedef std::vector<int, limited_allocator<int, 308> > V; + V v(100); int a[] = {1, 2, 3, 4, 5}; const int N = sizeof(a)/sizeof(a[0]); - std::vector<int>::iterator i = v.insert(v.cbegin() + 10, input_iterator<const int*>(a), - input_iterator<const int*>(a+N)); + V::iterator i = v.insert(v.cbegin() + 10, input_iterator<const int*>(a), + input_iterator<const int*>(a+N)); assert(v.size() == 100 + N); assert(is_contiguous_container_asan_correct(v)); assert(i == v.begin() + 10); @@ -112,11 +117,12 @@ int main() assert(v[j] == 0); } { - std::vector<int, limited_allocator<int, 300> > v(100); + typedef std::vector<int, limited_allocator<int, 300> > V; + V v(100); int a[] = {1, 2, 3, 4, 5}; const int N = sizeof(a)/sizeof(a[0]); - std::vector<int>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), - forward_iterator<const int*>(a+N)); + V::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), + forward_iterator<const int*>(a+N)); assert(v.size() == 100 + N); assert(is_contiguous_container_asan_correct(v)); assert(i == v.begin() + 10); @@ -130,11 +136,12 @@ int main() } #if TEST_STD_VER >= 11 { - std::vector<int, min_allocator<int>> v(100); + typedef std::vector<int, min_allocator<int> > V; + V v(100); int a[] = {1, 2, 3, 4, 5}; const int N = sizeof(a)/sizeof(a[0]); - std::vector<int, min_allocator<int>>::iterator i = v.insert(v.cbegin() + 10, input_iterator<const int*>(a), - input_iterator<const int*>(a+N)); + V::iterator i = v.insert(v.cbegin() + 10, input_iterator<const int*>(a), + input_iterator<const int*>(a+N)); assert(v.size() == 100 + N); assert(is_contiguous_container_asan_correct(v)); assert(i == v.begin() + 10); @@ -147,11 +154,12 @@ int main() assert(v[j] == 0); } { - std::vector<int, min_allocator<int>> v(100); + typedef std::vector<int, min_allocator<int> > V; + V v(100); int a[] = {1, 2, 3, 4, 5}; const int N = sizeof(a)/sizeof(a[0]); - std::vector<int, min_allocator<int>>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), - forward_iterator<const int*>(a+N)); + V::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const int*>(a), + forward_iterator<const int*>(a+N)); assert(v.size() == 100 + N); assert(is_contiguous_container_asan_correct(v)); assert(i == v.begin() + 10); |