Skip to content

Commit 3606da5

Browse files
committed
[libc++] Enable ranges_robust_against* and niebloid tests for implemented ranges algorithms
Spies: libcxx-commits Differential Revision: https://reviews.llvm.org/D126477
1 parent aaaf9ce commit 3606da5

File tree

4 files changed

+54
-54
lines changed

4 files changed

+54
-54
lines changed

libcxx/docs/Status/RangesAlgorithms.csv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Search,find_if_not,Nikolas Klauser,`D121248 <https://reviews.llvm.org/D121248>`_
88
Search,find_first_of,Not assigned,n/a,Not started
99
Search,adjacent_find,Not assigned,n/a,Not started
1010
Search,mismatch,Nikolas Klauser,`D117817 <https://llvm.org/D117817>`_,✅
11-
Search,equal,Nikolas Klauser,n/a,✅
11+
Search,equal,Nikolas Klauser,`D123681 <https://reviews.llvm.org/D123681>`,✅
1212
Search,lexicographical_compare,Not assigned,n/a,Not started
1313
Search,partition_point,Christopher Di Bella,`D105794 <https://llvm.org/D105794>`_,Under review
1414
Search,lower_bound,Christopher Di Bella,`D105795 <https://llvm.org/D105795>`_,Under review
@@ -34,8 +34,8 @@ Read-only,is_heap,Not assigned,n/a,Not started
3434
Read-only,is_heap_until,Not assigned,n/a,Not started
3535
Read-only,clamp,Not assigned,n/a,Not started
3636
Read-only,is_permutation,Not assigned,n/a,Not started
37-
Read-only,for_each,Nikolas Klauser,n/a,✅
38-
Read-only,for_each_n,Nikolas Klauser,n/a,✅
37+
Read-only,for_each,Nikolas Klauser,`D124332 <https://llvm.org/D124332>`_,✅
38+
Read-only,for_each_n,Nikolas Klauser,`D124332 <https://llvm.org/D124332>`_,✅
3939
Write,copy,Nikolas Klauser,`D122982 <https://llvm.org/D122982>`_,✅
4040
Write,copy_if,Nikolas Klauser,`D122982 <https://llvm.org/D122982>`_,✅
4141
Write,copy_n,Nikolas Klauser,`D122982 <https://llvm.org/D122982>`_,✅

libcxx/test/libcxx/algorithms/ranges_robust_against_copying_comparators.pass.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ constexpr bool all_the_algorithms()
8181
void *b[10] = {};
8282
//void *half[5] = {};
8383
void **first = a;
84-
//void **mid = a+5;
84+
void **mid = a+5;
8585
void **last = a+10;
8686
void **first2 = b;
8787
//void **mid2 = b+5;
8888
void **last2 = b+10;
8989
void *value = nullptr;
90-
//int count = 1;
90+
int count = 1;
9191

9292
int copies = 0;
9393
//(void)std::ranges::adjacent_find(first, last, Equal(&copies)); assert(copies == 0);
@@ -101,8 +101,8 @@ constexpr bool all_the_algorithms()
101101
//(void)std::ranges::clamp(value, value, value, Less(&copies)); assert(copies == 0);
102102
(void)std::ranges::count_if(first, last, UnaryTrue(&copies)); assert(copies == 0);
103103
(void)std::ranges::count_if(a, UnaryTrue(&copies)); assert(copies == 0);
104-
//(void)std::ranges::copy_if(first, last, first2, UnaryTrue(&copies)); assert(copies == 0);
105-
//(void)std::ranges::copy_if(a, first2, UnaryTrue(&copies)); assert(copies == 0);
104+
(void)std::ranges::copy_if(first, last, first2, UnaryTrue(&copies)); assert(copies == 0);
105+
(void)std::ranges::copy_if(a, first2, UnaryTrue(&copies)); assert(copies == 0);
106106
#if TEST_STD_VER > 20
107107
//(void)std::ranges::ends_with(first, last, first2, last2, Equal(&copies)); assert(copies == 0);
108108
#endif
@@ -118,9 +118,9 @@ constexpr bool all_the_algorithms()
118118
(void)std::ranges::find_if(a, UnaryTrue(&copies)); assert(copies == 0);
119119
(void)std::ranges::find_if_not(first, last, UnaryTrue(&copies)); assert(copies == 0);
120120
(void)std::ranges::find_if_not(a, UnaryTrue(&copies)); assert(copies == 0);
121-
//(void)std::ranges::for_each(first, last, UnaryVoid(&copies)); assert(copies == 1); copies = 0;
122-
//(void)std::ranges::for_each(a, UnaryVoid(&copies)); assert(copies == 1); copies = 0;
123-
//(void)std::ranges::for_each_n(first, count, UnaryVoid(&copies)); assert(copies == 0);
121+
(void)std::ranges::for_each(first, last, UnaryVoid(&copies)); assert(copies == 1); copies = 0;
122+
(void)std::ranges::for_each(a, UnaryVoid(&copies)); assert(copies == 1); copies = 0;
123+
(void)std::ranges::for_each_n(first, count, UnaryVoid(&copies)); assert(copies == 1); copies = 0;
124124
//(void)std::ranges::generate(first, last, NullaryValue(&copies)); assert(copies == 0);
125125
//(void)std::ranges::generate(a, NullaryValue(&copies)); assert(copies == 0);
126126
//(void)std::ranges::generate_n(first, count, NullaryValue(&copies)); assert(copies == 0);
@@ -130,8 +130,8 @@ constexpr bool all_the_algorithms()
130130
//(void)std::ranges::is_heap(a, Less(&copies)); assert(copies == 0);
131131
//(void)std::ranges::is_heap_until(first, last, Less(&copies)); assert(copies == 0);
132132
//(void)std::ranges::is_heap_until(a, Less(&copies)); assert(copies == 0);
133-
//(void)std::ranges::is_partitioned(first, last, UnaryTrue(&copies)); assert(copies == 0);
134-
//(void)std::ranges::is_partitioned(a, UnaryTrue(&copies)); assert(copies == 0);
133+
(void)std::ranges::is_partitioned(first, last, UnaryTrue(&copies)); assert(copies == 0);
134+
(void)std::ranges::is_partitioned(a, UnaryTrue(&copies)); assert(copies == 0);
135135
//(void)std::ranges::is_permutation(first, last, first2, last2, Equal(&copies)); assert(copies == 0);
136136
//(void)std::ranges::is_permutation(a, b, Equal(&copies)); assert(copies == 0);
137137
(void)std::ranges::is_sorted(first, last, Less(&copies)); assert(copies == 0);
@@ -146,16 +146,16 @@ constexpr bool all_the_algorithms()
146146
//(void)std::ranges::lower_bound(a, value, Less(&copies)); assert(copies == 0);
147147
//(void)std::ranges::make_heap(first, last, Less(&copies)); assert(copies == 0);
148148
//(void)std::ranges::make_heap(a, Less(&copies)); assert(copies == 0);
149-
//(void)std::ranges::max(value, value, Less(&copies)); assert(copies == 0);
150-
//(void)std::ranges::max({ value, value }, Less(&copies)); assert(copies == 0);
151-
//(void)std::ranges::max(a, Less(&copies)); assert(copies == 0);
149+
(void)std::ranges::max(value, value, Less(&copies)); assert(copies == 0);
150+
(void)std::ranges::max({ value, value }, Less(&copies)); assert(copies == 0);
151+
(void)std::ranges::max(a, Less(&copies)); assert(copies == 0);
152152
(void)std::ranges::max_element(first, last, Less(&copies)); assert(copies == 0);
153153
(void)std::ranges::max_element(a, Less(&copies)); assert(copies == 0);
154154
//(void)std::ranges::merge(first, mid, mid, last, first2, Less(&copies)); assert(copies == 0);
155155
//(void)std::ranges::merge(half, half, b, Less(&copies)); assert(copies == 0);
156-
//(void)std::ranges::min(value, value, Less(&copies)); assert(copies == 0);
157-
//(void)std::ranges::min({ value, value }, Less(&copies)); assert(copies == 0);
158-
//(void)std::ranges::min(a, Less(&copies)); assert(copies == 0);
156+
(void)std::ranges::min(value, value, Less(&copies)); assert(copies == 0);
157+
(void)std::ranges::min({ value, value }, Less(&copies)); assert(copies == 0);
158+
(void)std::ranges::min(a, Less(&copies)); assert(copies == 0);
159159
(void)std::ranges::min_element(first, last, Less(&copies)); assert(copies == 0);
160160
(void)std::ranges::min_element(a, Less(&copies)); assert(copies == 0);
161161
(void)std::ranges::minmax(value, value, Less(&copies)); assert(copies == 0);
@@ -218,10 +218,10 @@ constexpr bool all_the_algorithms()
218218
#if TEST_STD_VER > 20
219219
//(void)std::ranges::starts_with(first, last, first2, last2, Equal(&copies)); assert(copies == 0);
220220
#endif
221-
//(void)std::ranges::transform(first, last, first2, UnaryTransform(&copies)); assert(copies == 0);
222-
//(void)std::ranges::transform(a, first2, UnaryTransform(&copies)); assert(copies == 0);
223-
//(void)std::ranges::transform(first, mid, mid, last, first2, BinaryTransform(&copies)); assert(copies == 0);
224-
//(void)std::ranges::transform(a, b, first2, BinaryTransform(&copies)); assert(copies == 0);
221+
(void)std::ranges::transform(first, last, first2, UnaryTransform(&copies)); assert(copies == 0);
222+
(void)std::ranges::transform(a, first2, UnaryTransform(&copies)); assert(copies == 0);
223+
(void)std::ranges::transform(first, mid, mid, last, first2, BinaryTransform(&copies)); assert(copies == 0);
224+
(void)std::ranges::transform(a, b, first2, BinaryTransform(&copies)); assert(copies == 0);
225225
//(void)std::ranges::unique(first, last, Equal(&copies)); assert(copies == 0);
226226
//(void)std::ranges::unique(a, Equal(&copies)); assert(copies == 0);
227227
//(void)std::ranges::unique_copy(first, last, first2, Equal(&copies)); assert(copies == 0);

libcxx/test/libcxx/algorithms/ranges_robust_against_copying_projections.pass.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ constexpr bool all_the_algorithms()
6363
T b[10] = {};
6464
//T half[5] = {};
6565
T *first = a;
66-
//T *mid = a+5;
66+
T *mid = a+5;
6767
T *last = a+10;
6868
T *first2 = b;
6969
//T *mid2 = b+5;
7070
T *last2 = b+10;
7171
void *value = nullptr;
72-
//int count = 1;
72+
int count = 1;
7373

7474
int copies = 0;
7575
//(void)std::ranges::adjacent_find(first, last, Equal(), Proj(&copies)); assert(copies == 0);
@@ -85,8 +85,8 @@ constexpr bool all_the_algorithms()
8585
(void)std::ranges::count(a, value, Proj(&copies)); assert(copies == 0);
8686
(void)std::ranges::count_if(first, last, UnaryTrue(), Proj(&copies)); assert(copies == 0);
8787
(void)std::ranges::count_if(a, UnaryTrue(), Proj(&copies)); assert(copies == 0);
88-
//(void)std::ranges::copy_if(first, last, first2, UnaryTrue(), Proj(&copies)); assert(copies == 0);
89-
//(void)std::ranges::copy_if(a, first2, UnaryTrue(), Proj(&copies)); assert(copies == 0);
88+
(void)std::ranges::copy_if(first, last, first2, UnaryTrue(), Proj(&copies)); assert(copies == 0);
89+
(void)std::ranges::copy_if(a, first2, UnaryTrue(), Proj(&copies)); assert(copies == 0);
9090
#if TEST_STD_VER > 20
9191
//(void)std::ranges::ends_with(first, last, first2, last2, Equal(), Proj(&copies), Proj(&copies)); assert(copies == 0);
9292
#endif
@@ -104,17 +104,17 @@ constexpr bool all_the_algorithms()
104104
(void)std::ranges::find_if(a, UnaryTrue(), Proj(&copies)); assert(copies == 0);
105105
(void)std::ranges::find_if_not(first, last, UnaryTrue(), Proj(&copies)); assert(copies == 0);
106106
(void)std::ranges::find_if_not(a, UnaryTrue(), Proj(&copies)); assert(copies == 0);
107-
//(void)std::ranges::for_each(first, last, UnaryVoid(), Proj(&copies)); assert(copies == 1); copies = 0;
108-
//(void)std::ranges::for_each(a, UnaryVoid(), Proj(&copies)); assert(copies == 1); copies = 0;
109-
//(void)std::ranges::for_each_n(first, count, UnaryVoid(), Proj(&copies)); assert(copies == 0);
107+
(void)std::ranges::for_each(first, last, UnaryVoid(), Proj(&copies)); assert(copies == 0);
108+
(void)std::ranges::for_each(a, UnaryVoid(), Proj(&copies)); assert(copies == 0);
109+
(void)std::ranges::for_each_n(first, count, UnaryVoid(), Proj(&copies)); assert(copies == 0);
110110
//(void)std::ranges::includes(first, last, first2, last2, Less(), Proj(&copies), Proj(&copies)); assert(copies == 0);
111111
//(void)std::ranges::includes(a, b, Less(), Proj(&copies), Proj(&copies)); assert(copies == 0);
112112
//(void)std::ranges::is_heap(first, last, Less(), Proj(&copies)); assert(copies == 0);
113113
//(void)std::ranges::is_heap(a, Less(), Proj(&copies)); assert(copies == 0);
114114
//(void)std::ranges::is_heap_until(first, last, Less(), Proj(&copies)); assert(copies == 0);
115115
//(void)std::ranges::is_heap_until(a, Less(), Proj(&copies)); assert(copies == 0);
116-
//(void)std::ranges::is_partitioned(first, last, UnaryTrue(), Proj(&copies)); assert(copies == 0);
117-
//(void)std::ranges::is_partitioned(a, UnaryTrue(), Proj(&copies)); assert(copies == 0);
116+
(void)std::ranges::is_partitioned(first, last, UnaryTrue(), Proj(&copies)); assert(copies == 0);
117+
(void)std::ranges::is_partitioned(a, UnaryTrue(), Proj(&copies)); assert(copies == 0);
118118
//(void)std::ranges::is_permutation(first, last, first2, last2, Equal(), Proj(&copies), Proj(&copies)); assert(copies == 0);
119119
//(void)std::ranges::is_permutation(a, b, Equal(), Proj(&copies), Proj(&copies)); assert(copies == 0);
120120
(void)std::ranges::is_sorted(first, last, Less(), Proj(&copies)); assert(copies == 0);
@@ -129,16 +129,16 @@ constexpr bool all_the_algorithms()
129129
//(void)std::ranges::lower_bound(a, value, Less(), Proj(&copies)); assert(copies == 0);
130130
//(void)std::ranges::make_heap(first, last, Less(), Proj(&copies)); assert(copies == 0);
131131
//(void)std::ranges::make_heap(a, Less(), Proj(&copies)); assert(copies == 0);
132-
//(void)std::ranges::max(T(), T(), Less(), Proj(&copies)); assert(copies == 0);
133-
//(void)std::ranges::max({ T(), T() }, Less(), Proj(&copies)); assert(copies == 0);
134-
//(void)std::ranges::max(a, Less(), Proj(&copies)); assert(copies == 0);
132+
(void)std::ranges::max(T(), T(), Less(), Proj(&copies)); assert(copies == 0);
133+
(void)std::ranges::max({ T(), T() }, Less(), Proj(&copies)); assert(copies == 0);
134+
(void)std::ranges::max(a, Less(), Proj(&copies)); assert(copies == 0);
135135
(void)std::ranges::max_element(first, last, Less(), Proj(&copies)); assert(copies == 0);
136136
(void)std::ranges::max_element(a, Less(), Proj(&copies)); assert(copies == 0);
137137
//(void)std::ranges::merge(first, mid, mid, last, first2, Less(), Proj(&copies), Proj(&copies)); assert(copies == 0);
138138
//(void)std::ranges::merge(half, half, b, Less(), Proj(&copies), Proj(&copies)); assert(copies == 0);
139-
//(void)std::ranges::min(T(), T(), Less(), Proj(&copies)); assert(copies == 0);
140-
//(void)std::ranges::min({ T(), T() }, Less(), Proj(&copies)); assert(copies == 0);
141-
//(void)std::ranges::min(a, Less(), Proj(&copies)); assert(copies == 0);
139+
(void)std::ranges::min(T(), T(), Less(), Proj(&copies)); assert(copies == 0);
140+
(void)std::ranges::min({ T(), T() }, Less(), Proj(&copies)); assert(copies == 0);
141+
(void)std::ranges::min(a, Less(), Proj(&copies)); assert(copies == 0);
142142
(void)std::ranges::min_element(first, last, Less(), Proj(&copies)); assert(copies == 0);
143143
(void)std::ranges::min_element(a, Less(), Proj(&copies)); assert(copies == 0);
144144
(void)std::ranges::minmax(T(), T(), Less(), Proj(&copies)); assert(copies == 0);
@@ -209,10 +209,10 @@ constexpr bool all_the_algorithms()
209209
#if TEST_STD_VER > 20
210210
//(void)std::ranges::starts_with(first, last, first2, last2, Equal(), Proj(&copies), Proj(&copies)); assert(copies == 0);
211211
#endif
212-
//(void)std::ranges::transform(first, last, first2, UnaryTransform(), Proj(&copies)); assert(copies == 0);
213-
//(void)std::ranges::transform(a, first2, UnaryTransform(), Proj(&copies)); assert(copies == 0);
214-
//(void)std::ranges::transform(first, mid, mid, last, first2, BinaryTransform(), Proj(&copies), Proj(&copies)); assert(copies == 0);
215-
//(void)std::ranges::transform(a, b, first2, BinaryTransform(), Proj(&copies), Proj(&copies)); assert(copies == 0);
212+
(void)std::ranges::transform(first, last, first2, UnaryTransform(), Proj(&copies)); assert(copies == 0);
213+
(void)std::ranges::transform(a, first2, UnaryTransform(), Proj(&copies)); assert(copies == 0);
214+
(void)std::ranges::transform(first, mid, mid, last, first2, BinaryTransform(), Proj(&copies), Proj(&copies)); assert(copies == 0);
215+
(void)std::ranges::transform(a, b, first2, BinaryTransform(), Proj(&copies), Proj(&copies)); assert(copies == 0);
216216
//(void)std::ranges::unique(first, last, Equal(), Proj(&copies)); assert(copies == 0);
217217
//(void)std::ranges::unique(a, Equal(), Proj(&copies)); assert(copies == 0);
218218
//(void)std::ranges::unique_copy(first, last, first2, Equal(), Proj(&copies)); assert(copies == 0);

libcxx/test/std/library/description/conventions/customization.point.object/niebloid.compile.pass.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ constexpr bool test(CPO& o, Args&&...) {
5454
int *p;
5555
int a[10];
5656
auto odd = [](int x) { return x % 2 != 0; };
57-
//auto triple = [](int x) { return 3*x; };
57+
auto triple = [](int x) { return 3*x; };
5858
//auto plus = [](int x, int y) { return x == y; };
5959
//std::mt19937 g;
6060

@@ -65,38 +65,38 @@ static_assert(test(std::ranges::all_of, a, odd));
6565
static_assert(test(std::ranges::any_of, a, odd));
6666
//static_assert(test(std::ranges::binary_search, a, 42));
6767
//static_assert(test(std::ranges::clamp, 42, 42, 42));
68-
//static_assert(test(std::ranges::copy, a, a));
69-
//static_assert(test(std::ranges::copy_backward, a, a));
70-
//static_assert(test(std::ranges::copy_if, a, a, odd));
71-
//static_assert(test(std::ranges::copy_n, a, 10, a));
68+
static_assert(test(std::ranges::copy, a, a));
69+
static_assert(test(std::ranges::copy_backward, a, a));
70+
static_assert(test(std::ranges::copy_if, a, a, odd));
71+
static_assert(test(std::ranges::copy_n, a, 10, a));
7272
static_assert(test(std::ranges::count, a, 42));
7373
static_assert(test(std::ranges::count_if, a, odd));
7474
//static_assert(test(std::ranges::ends_with, a, a));
75-
//static_assert(test(std::ranges::equal, a, a));
75+
static_assert(test(std::ranges::equal, a, a));
7676
//static_assert(test(std::ranges::equal_range, a, 42));
77-
//static_assert(test(std::ranges::fill, a, 42));
78-
//static_assert(test(std::ranges::fill_n, a, 10, 42));
77+
static_assert(test(std::ranges::fill, a, 42));
78+
static_assert(test(std::ranges::fill_n, a, 10, 42));
7979
static_assert(test(std::ranges::find, a, 42));
8080
//static_assert(test(std::ranges::find_end, a, a));
8181
//static_assert(test(std::ranges::find_first_of, a, a));
8282
static_assert(test(std::ranges::find_if, a, odd));
8383
static_assert(test(std::ranges::find_if_not, a, odd));
84-
//static_assert(test(std::ranges::for_each, a, odd));
85-
//static_assert(test(std::ranges::for_each_n, a, 10, odd));
84+
static_assert(test(std::ranges::for_each, a, odd));
85+
static_assert(test(std::ranges::for_each_n, a, 10, odd));
8686
//static_assert(test(std::ranges::generate, a, 42));
8787
//static_assert(test(std::ranges::generate_n, a, 10, 42));
8888
//static_assert(test(std::ranges::includes, a, a));
8989
//static_assert(test(std::ranges::inplace_merge, a, a+5));
9090
//static_assert(test(std::ranges::is_heap, a));
9191
//static_assert(test(std::ranges::is_heap_until, a));
92-
//static_assert(test(std::ranges::is_partitioned, a, odd));
92+
static_assert(test(std::ranges::is_partitioned, a, odd));
9393
//static_assert(test(std::ranges::is_permutation, a, a));
9494
static_assert(test(std::ranges::is_sorted, a));
9595
static_assert(test(std::ranges::is_sorted_until, a));
9696
//static_assert(test(std::ranges::lexicographical_compare, a, a));
9797
//static_assert(test(std::ranges::lower_bound, a, 42));
9898
//static_assert(test(std::ranges::make_heap, a));
99-
//static_assert(test(std::ranges::max, a));
99+
static_assert(test(std::ranges::max, a));
100100
static_assert(test(std::ranges::max_element, a));
101101
//static_assert(test(std::ranges::merge, a, a, a));
102102
static_assert(test(std::ranges::min, a));
@@ -143,7 +143,7 @@ static_assert(test(std::ranges::reverse, a));
143143
//static_assert(test(std::ranges::stable_sort, a));
144144
//static_assert(test(std::ranges::starts_with, a, a));
145145
static_assert(test(std::ranges::swap_ranges, a, a));
146-
//static_assert(test(std::ranges::transform, a, a, triple));
146+
static_assert(test(std::ranges::transform, a, a, triple));
147147
//static_assert(test(std::ranges::unique, a));
148148
//static_assert(test(std::ranges::unique_copy, a, a));
149149
//static_assert(test(std::ranges::upper_bound, a, 42));

0 commit comments

Comments
 (0)