From 10d38699524a6092dc85f150fc1078567dde9537 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Thu, 3 Jun 2021 14:56:51 -0400 Subject: [PATCH] [libc++] NFC: Tidy up the reverse_iterator tests Incidentally, that fixes an error with the modules build. --- .../iterator_concept_conformance.compile.pass.cpp | 2 +- .../equal.pass.cpp} | 30 +++++---------- .../greater-equal.pass.cpp} | 29 +++++---------- .../greater.pass.cpp} | 29 +++++---------- .../less-equal.pass.cpp} | 29 +++++---------- .../less.pass.cpp} | 29 +++++---------- .../not-equal.pass.cpp} | 29 +++++---------- .../assign.pass.cpp} | 34 ++++++----------- .../ctor.default.pass.cpp} | 23 +++++------- .../ctor.iter.explicit.verify.cpp} | 22 +++-------- .../ctor.iter.pass.cpp} | 24 +++++------- .../ctor.reverse_iterator.pass.cpp} | 33 ++++++----------- .../reverse.iter.conv/base.pass.cpp | 37 +++++++++++++++++++ .../arrow.pass.cpp} | 4 +- .../bracket.pass.cpp} | 29 +++++++-------- .../dereference.pass.cpp} | 4 +- .../decrement-assign.pass.cpp} | 25 +++++-------- .../increment-assign.pass.cpp} | 27 +++++--------- .../minus.pass.cpp} | 29 +++++---------- .../plus.pass.cpp} | 29 +++++---------- .../postdecrement.pass.cpp} | 29 +++++---------- .../postincrement.pass.cpp} | 29 +++++---------- .../predecrement.pass.cpp} | 30 +++++---------- .../preincrement.pass.cpp} | 30 +++++---------- .../make_reverse_iterator.pass.cpp | 34 +++++++---------- .../minus.pass.cpp} | 29 +++++---------- .../plus.pass.cpp} | 30 +++++---------- .../reverse_iterator.compile.fail.cpp | 42 --------------------- .../reverse.iter.conv/tested_elsewhere.pass.cpp | 13 ------- .../reverse_iterator.compile.fail.cpp | 43 ---------------------- .../nothing_to_do.pass.cpp | 13 ------- .../{reverse.iterator => }/types.pass.cpp | 0 32 files changed, 259 insertions(+), 560 deletions(-) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op==/test.pass.cpp => reverse.iter.cmp/equal.pass.cpp} (68%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.opgt=/test.pass.cpp => reverse.iter.cmp/greater-equal.pass.cpp} (67%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.opgt/test.pass.cpp => reverse.iter.cmp/greater.pass.cpp} (67%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.oplt=/test.pass.cpp => reverse.iter.cmp/less-equal.pass.cpp} (67%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.oplt/test.pass.cpp => reverse.iter.cmp/less.pass.cpp} (67%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op!=/test.pass.cpp => reverse.iter.cmp/not-equal.pass.cpp} (68%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp => reverse.iter.cons/assign.pass.cpp} (60%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.cons/default.pass.cpp => reverse.iter.cons/ctor.default.pass.cpp} (76%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.cons/iter.compile.fail.cpp => reverse.iter.cons/ctor.iter.explicit.verify.cpp} (62%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.cons/iter.pass.cpp => reverse.iter.cons/ctor.iter.pass.cpp} (72%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp => reverse.iter.cons/ctor.reverse_iterator.pass.cpp} (64%) create mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.conv/base.pass.cpp rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp => reverse.iter.elem/arrow.pass.cpp} (97%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.opindex/difference_type.pass.cpp => reverse.iter.elem/bracket.pass.cpp} (63%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp => reverse.iter.elem/dereference.pass.cpp} (95%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op-=/difference_type.pass.cpp => reverse.iter.nav/decrement-assign.pass.cpp} (67%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op+=/difference_type.pass.cpp => reverse.iter.nav/increment-assign.pass.cpp} (64%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op-/difference_type.pass.cpp => reverse.iter.nav/minus.pass.cpp} (59%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op+/difference_type.pass.cpp => reverse.iter.nav/plus.pass.cpp} (58%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op--/post.pass.cpp => reverse.iter.nav/postdecrement.pass.cpp} (62%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op++/post.pass.cpp => reverse.iter.nav/postincrement.pass.cpp} (62%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op--/pre.pass.cpp => reverse.iter.nav/predecrement.pass.cpp} (60%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.op++/pre.pass.cpp => reverse.iter.nav/preincrement.pass.cpp} (59%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.make => reverse.iter.nonmember}/make_reverse_iterator.pass.cpp (61%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.opdiff/test.pass.cpp => reverse.iter.nonmember/minus.pass.cpp} (67%) rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iter.ops/reverse.iter.opsum/difference_type.pass.cpp => reverse.iter.nonmember/plus.pass.cpp} (57%) delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.compile.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.conv/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.compile.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.requirements/nothing_to_do.pass.cpp rename libcxx/test/std/iterators/predef.iterators/reverse.iterators/{reverse.iterator => }/types.pass.cpp (100%) diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/iterator_concept_conformance.compile.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/iterator_concept_conformance.compile.pass.cpp index 10231b4..2ad643a 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/iterator_concept_conformance.compile.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/iterator_concept_conformance.compile.pass.cpp @@ -17,7 +17,7 @@ #include "test_iterators.h" template -[[nodiscard]] consteval bool common_reverse_iterator_checks() { +constexpr bool common_reverse_iterator_checks() { static_assert(std::indirectly_writable); static_assert(std::sentinel_for); static_assert(std::sentinel_for>); diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op==/test.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/equal.pass.cpp similarity index 68% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op==/test.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/equal.pass.cpp index 7bd699b..fcf8d88 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op==/test.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/equal.pass.cpp @@ -12,10 +12,7 @@ // template // requires HasEqualTo -// constexpr bool -// operator==(const reverse_iterator& x, const reverse_iterator& y); -// -// constexpr in C++17 +// bool operator==(const reverse_iterator& x, const reverse_iterator& y); // constexpr since C++17 #include #include @@ -24,16 +21,13 @@ #include "test_iterators.h" template -void -test(It l, It r, bool x) -{ +TEST_CONSTEXPR_CXX17 void test(It l, It r, bool x) { const std::reverse_iterator r1(l); const std::reverse_iterator r2(r); assert((r1 == r2) == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(bidirectional_iterator(s), bidirectional_iterator(s), true); test(bidirectional_iterator(s), bidirectional_iterator(s+1), false); @@ -41,19 +35,13 @@ int main(int, char**) test(random_access_iterator(s), random_access_iterator(s+1), false); test(s, s, true); test(s, s+1, false); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p); - constexpr RI it3 = std::make_reverse_iterator(p+1); - static_assert( (it1 == it2), ""); - static_assert(!(it1 == it3), ""); - } + static_assert(tests(), ""); #endif - - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opgt=/test.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/greater-equal.pass.cpp similarity index 67% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opgt=/test.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/greater-equal.pass.cpp index de53281..fdcd02a 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opgt=/test.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/greater-equal.pass.cpp @@ -12,10 +12,7 @@ // template // requires HasGreater -// constexpr bool -// operator>=(const reverse_iterator& x, const reverse_iterator& y); -// -// constexpr in C++17 +// bool operator>=(const reverse_iterator& x, const reverse_iterator& y); // constexpr since C++17 #include #include @@ -24,16 +21,13 @@ #include "test_iterators.h" template -void -test(It l, It r, bool x) -{ +TEST_CONSTEXPR_CXX17 void test(It l, It r, bool x) { const std::reverse_iterator r1(l); const std::reverse_iterator r2(r); assert((r1 >= r2) == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s), random_access_iterator(s), true); test(random_access_iterator(s), random_access_iterator(s+1), true); @@ -41,18 +35,13 @@ int main(int, char**) test(s, s, true); test(s, s+1, true); test(s+1, s, false); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p); - constexpr RI it3 = std::make_reverse_iterator(p+1); - static_assert( (it1 >= it2), ""); - static_assert( (it1 >= it3), ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opgt/test.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/greater.pass.cpp similarity index 67% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opgt/test.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/greater.pass.cpp index 86b19e3..dce331e 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opgt/test.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/greater.pass.cpp @@ -12,10 +12,7 @@ // template // requires HasGreater -// constexpr bool -// operator>(const reverse_iterator& x, const reverse_iterator& y); -// -// constexpr in C++17 +// bool operator>(const reverse_iterator& x, const reverse_iterator& y); // constexpr in C++17 #include #include @@ -24,16 +21,13 @@ #include "test_iterators.h" template -void -test(It l, It r, bool x) -{ +TEST_CONSTEXPR_CXX17 void test(It l, It r, bool x) { const std::reverse_iterator r1(l); const std::reverse_iterator r2(r); assert((r1 > r2) == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s), random_access_iterator(s), false); test(random_access_iterator(s), random_access_iterator(s+1), true); @@ -41,18 +35,13 @@ int main(int, char**) test(s, s, false); test(s, s+1, true); test(s+1, s, false); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p); - constexpr RI it3 = std::make_reverse_iterator(p+1); - static_assert(!(it1 > it2), ""); - static_assert( (it1 > it3), ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.oplt=/test.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/less-equal.pass.cpp similarity index 67% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.oplt=/test.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/less-equal.pass.cpp index 9275236..e9cea625 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.oplt=/test.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/less-equal.pass.cpp @@ -12,10 +12,7 @@ // template // requires HasGreater -// constexpr bool -// operator<=(const reverse_iterator& x, const reverse_iterator& y); -// -// constexpr in C++17 +// bool operator<=(const reverse_iterator& x, const reverse_iterator& y); // constexpr in C++17 #include #include @@ -24,16 +21,13 @@ #include "test_iterators.h" template -void -test(It l, It r, bool x) -{ +TEST_CONSTEXPR_CXX17 void test(It l, It r, bool x) { const std::reverse_iterator r1(l); const std::reverse_iterator r2(r); assert((r1 <= r2) == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s), random_access_iterator(s), true); test(random_access_iterator(s), random_access_iterator(s+1), false); @@ -41,18 +35,13 @@ int main(int, char**) test(s, s, true); test(s, s+1, false); test(s+1, s, true); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p); - constexpr RI it3 = std::make_reverse_iterator(p+1); - static_assert( (it1 <= it2), ""); - static_assert(!(it1 <= it3), ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.oplt/test.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/less.pass.cpp similarity index 67% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.oplt/test.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/less.pass.cpp index e49821f..b66147c 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.oplt/test.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/less.pass.cpp @@ -12,10 +12,7 @@ // template // requires HasGreater -// constexpr bool -// operator<(const reverse_iterator& x, const reverse_iterator& y); -// -// constexpr in C++17 +// bool operator<(const reverse_iterator& x, const reverse_iterator& y); // constexpr in C++17 #include #include @@ -24,16 +21,13 @@ #include "test_iterators.h" template -void -test(It l, It r, bool x) -{ +TEST_CONSTEXPR_CXX17 void test(It l, It r, bool x) { const std::reverse_iterator r1(l); const std::reverse_iterator r2(r); assert((r1 < r2) == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s), random_access_iterator(s), false); test(random_access_iterator(s), random_access_iterator(s+1), false); @@ -41,18 +35,13 @@ int main(int, char**) test(s, s, false); test(s, s+1, false); test(s+1, s, true); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p); - constexpr RI it3 = std::make_reverse_iterator(p+1); - static_assert(!(it1 < it2), ""); - static_assert(!(it1 < it3), ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op!=/test.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/not-equal.pass.cpp similarity index 68% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op!=/test.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/not-equal.pass.cpp index f3e7497..37a6ff1 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op!=/test.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/not-equal.pass.cpp @@ -12,10 +12,7 @@ // template // requires HasEqualTo -// constexpr bool -// operator!=(const reverse_iterator& x, const reverse_iterator& y); -// -// constexpr in C++17 +// bool operator!=(const reverse_iterator& x, const reverse_iterator& y); // constexpr in C++17 #include #include @@ -24,16 +21,13 @@ #include "test_iterators.h" template -void -test(It l, It r, bool x) -{ +TEST_CONSTEXPR_CXX17 void test(It l, It r, bool x) { const std::reverse_iterator r1(l); const std::reverse_iterator r2(r); assert((r1 != r2) == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(bidirectional_iterator(s), bidirectional_iterator(s), false); test(bidirectional_iterator(s), bidirectional_iterator(s+1), true); @@ -41,18 +35,13 @@ int main(int, char**) test(random_access_iterator(s), random_access_iterator(s+1), true); test(s, s, false); test(s, s+1, true); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p); - constexpr RI it3 = std::make_reverse_iterator(p+1); - static_assert(!(it1 != it2), ""); - static_assert( (it1 != it3), ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/assign.pass.cpp similarity index 60% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/assign.pass.cpp index 838bdc9..95c6bde 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/assign.pass.cpp @@ -11,11 +11,7 @@ // reverse_iterator // template -// requires HasAssign -// constexpr reverse_iterator& -// operator=(const reverse_iterator& u); -// -// constexpr in C++17 +// reverse_iterator& operator=(const reverse_iterator& u); // constexpr since C++17 #include #include @@ -24,9 +20,7 @@ #include "test_iterators.h" template -void -test(U u) -{ +TEST_CONSTEXPR_CXX17 void test(U u) { const std::reverse_iterator r2(u); std::reverse_iterator r1; std::reverse_iterator& rr = r1 = r2; @@ -34,27 +28,21 @@ test(U u) assert(&rr == &r1); } -struct Base {}; -struct Derived : Base {}; +struct Base { }; +struct Derived : Base { }; -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { Derived d; - test >(bidirectional_iterator(&d)); test >(random_access_iterator(&d)); test(&d); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - using BaseIter = std::reverse_iterator; - using DerivedIter = std::reverse_iterator; - constexpr const Derived *p = nullptr; - constexpr DerivedIter it1 = std::make_reverse_iterator(p); - constexpr BaseIter it2 = (BaseIter{nullptr} = it1); - static_assert(it2.base() == p, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/default.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.default.pass.cpp similarity index 76% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/default.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.default.pass.cpp index 32931ee..fcb96de 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/default.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.default.pass.cpp @@ -10,9 +10,7 @@ // reverse_iterator -// constexpr reverse_iterator(); -// -// constexpr in C++17 +// reverse_iterator(); // constexpr since C++17 #include @@ -20,26 +18,23 @@ #include "test_iterators.h" template -void -test() -{ +TEST_CONSTEXPR_CXX17 void test() { std::reverse_iterator r; (void)r; } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { test >(); test >(); test(); test(); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr std::reverse_iterator it; - (void)it; - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/iter.compile.fail.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.iter.explicit.verify.cpp similarity index 62% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/iter.compile.fail.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.iter.explicit.verify.cpp index 79e484a..940848b 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/iter.compile.fail.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.iter.explicit.verify.cpp @@ -6,30 +6,18 @@ // //===----------------------------------------------------------------------===// -// GCC 5 does not evaluate static assertions dependent on a template parameter. -// UNSUPPORTED: gcc-5 - // // reverse_iterator // explicit reverse_iterator(Iter x); -// test explicit +// test explicitness #include -template -void -test(It i) -{ - std::reverse_iterator r = i; -} - -int main(int, char**) -{ - const char s[] = "123"; - test(s); - - return 0; +int main(int, char**) { + char const* it = ""; + std::reverse_iterator r = it; // expected-error{{no viable conversion from 'const char *' to 'std::reverse_iterator'}} + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/iter.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.iter.pass.cpp similarity index 72% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/iter.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.iter.pass.cpp index 32cc74f..801b2cf 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/iter.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.iter.pass.cpp @@ -10,9 +10,7 @@ // reverse_iterator -// explicit constexpr reverse_iterator(Iter x); -// -// constexpr in C++17 +// explicit reverse_iterator(Iter x); // constexpr since C++17 #include #include @@ -21,27 +19,23 @@ #include "test_iterators.h" template -void -test(It i) -{ +TEST_CONSTEXPR_CXX17 void test(It i) { std::reverse_iterator r(i); assert(r.base() == i); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char s[] = "123"; test(bidirectional_iterator(s)); test(random_access_iterator(s)); test(s); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - constexpr std::reverse_iterator it(p); - static_assert(it.base() == p); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.reverse_iterator.pass.cpp similarity index 64% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.reverse_iterator.pass.cpp index 53b82bd..9aa6995 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.cons/ctor.reverse_iterator.pass.cpp @@ -11,10 +11,7 @@ // reverse_iterator // template -// requires HasConstructor -// constexpr reverse_iterator(const reverse_iterator &u); -// -// constexpr in C++17 +// reverse_iterator(const reverse_iterator &u); // constexpr since C++17 #include #include @@ -22,34 +19,28 @@ #include "test_macros.h" #include "test_iterators.h" +struct Base { }; +struct Derived : Base { }; + template -void -test(U u) -{ +TEST_CONSTEXPR_CXX17 void test(U u) { const std::reverse_iterator r2(u); std::reverse_iterator r1 = r2; assert(r1.base() == u); } -struct Base {}; -struct Derived : Base {}; - -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { Derived d; - test >(bidirectional_iterator(&d)); test >(random_access_iterator(&d)); test(&d); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const Derived *p = nullptr; - constexpr std::reverse_iterator it1 = std::make_reverse_iterator(p); - constexpr std::reverse_iterator it2(it1); - static_assert(it2.base() == p); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.conv/base.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.conv/base.pass.cpp new file mode 100644 index 0000000..4fb33f5 --- /dev/null +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.conv/base.pass.cpp @@ -0,0 +1,37 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// + +// reverse_iterator + +// iterator_type base() const; // constexpr since C++17 + +#include +#include + +#include "test_macros.h" +#include "test_iterators.h" + +TEST_CONSTEXPR_CXX17 bool test() { + typedef bidirectional_iterator Iter; + int i = 0; + Iter iter(&i); + std::reverse_iterator const reverse(iter); + std::reverse_iterator::iterator_type base = reverse.base(); + assert(base == Iter(&i)); + return true; +} + +int main(int, char**) { + test(); +#if TEST_STD_VER > 14 + static_assert(test(), ""); +#endif + return 0; +} diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/arrow.pass.cpp similarity index 97% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/arrow.pass.cpp index f16fb27..a1c40eac 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/arrow.pass.cpp @@ -10,9 +10,7 @@ // reverse_iterator -// constexpr pointer operator->() const; -// -// constexpr in C++17 +// pointer operator->() const; // constexpr in C++17 // Be sure to respect LWG 198: // http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#198 diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opindex/difference_type.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/bracket.pass.cpp similarity index 63% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opindex/difference_type.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/bracket.pass.cpp index bc20d13..37a857c 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opindex/difference_type.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/bracket.pass.cpp @@ -11,7 +11,7 @@ // reverse_iterator // requires RandomAccessIterator -// unspecified operator[](difference_type n) const; +// unspecified operator[](difference_type n) const; // constexpr since C++17 #include #include @@ -20,31 +20,28 @@ #include "test_iterators.h" template -void -test(It i, typename std::iterator_traits::difference_type n, - typename std::iterator_traits::value_type x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, + typename std::iterator_traits::difference_type n, + typename std::iterator_traits::value_type x) { typedef typename std::iterator_traits::value_type value_type; const std::reverse_iterator r(i); value_type rr = r[n]; assert(rr == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s+5), 4, '1'); + test(random_access_iterator(s+5), 0, '5'); test(s+5, 4, '1'); + test(s+5, 0, '5'); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p + 5); - static_assert(it1[0] == '5', ""); - static_assert(it1[4] == '1', ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/dereference.pass.cpp similarity index 95% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/dereference.pass.cpp index 820ee00..19062d4 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.elem/dereference.pass.cpp @@ -10,9 +10,7 @@ // reverse_iterator -// constexpr reference operator*() const; -// -// constexpr in C++17 +// reference operator*() const; // constexpr in C++17 // Be sure to respect LWG 198: // http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#198 diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op-=/difference_type.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/decrement-assign.pass.cpp similarity index 67% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op-=/difference_type.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/decrement-assign.pass.cpp index ab92dc0..8c83ec1 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op-=/difference_type.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/decrement-assign.pass.cpp @@ -11,9 +11,7 @@ // reverse_iterator // requires RandomAccessIterator -// constexpr reverse_iterator& operator-=(difference_type n); -// -// constexpr in C++17 +// reverse_iterator& operator-=(difference_type n); // constexpr in C++17 #include #include @@ -22,29 +20,24 @@ #include "test_iterators.h" template -void -test(It i, typename std::iterator_traits::difference_type n, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, typename std::iterator_traits::difference_type n, It x) { std::reverse_iterator r(i); std::reverse_iterator& rr = r -= n; assert(r.base() == x); assert(&rr == &r); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s+5), 5, random_access_iterator(s+10)); test(s+5, 5, s+10); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - constexpr auto it1 = std::make_reverse_iterator(p+5); - constexpr auto it2 = std::make_reverse_iterator(p) -= 5; - static_assert(it1 == it2, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op+=/difference_type.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/increment-assign.pass.cpp similarity index 64% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op+=/difference_type.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/increment-assign.pass.cpp index 229f3ca..e32fac9 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op+=/difference_type.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/increment-assign.pass.cpp @@ -11,9 +11,7 @@ // reverse_iterator // requires RandomAccessIterator -// constexpr reverse_iterator& operator+=(difference_type n); -// -// constexpr in C++17 +// reverse_iterator& operator+=(difference_type n); // constexpr in C++17 #include #include @@ -22,29 +20,24 @@ #include "test_iterators.h" template -void -test(It i, typename std::iterator_traits::difference_type n, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, typename std::iterator_traits::difference_type n, It x) { std::reverse_iterator r(i); std::reverse_iterator& rr = r += n; assert(r.base() == x); assert(&rr == &r); } -int main(int, char**) -{ - const char* s = "1234567890"; +TEST_CONSTEXPR_CXX17 bool tests() { + char const* s = "1234567890"; test(random_access_iterator(s+5), 5, random_access_iterator(s)); test(s+5, 5, s); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - constexpr auto it1 = std::make_reverse_iterator(p); - constexpr auto it2 = std::make_reverse_iterator(p+5) += 5; - static_assert(it1 == it2, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op-/difference_type.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/minus.pass.cpp similarity index 59% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op-/difference_type.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/minus.pass.cpp index 0e3a5d36..f2474dd 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op-/difference_type.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/minus.pass.cpp @@ -11,9 +11,7 @@ // reverse_iterator // requires RandomAccessIterator -// constexpr reverse_iterator operator-(difference_type n) const; -// -// constexpr in C++17 +// reverse_iterator operator-(difference_type n) const; // constexpr in C++17 #include #include @@ -22,32 +20,23 @@ #include "test_iterators.h" template -void -test(It i, typename std::iterator_traits::difference_type n, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, typename std::iterator_traits::difference_type n, It x) { const std::reverse_iterator r(i); std::reverse_iterator rr = r - n; assert(rr.base() == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s+5), 5, random_access_iterator(s+10)); test(s+5, 5, s+10); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p + 5); - constexpr RI it3 = it1 - 5; - static_assert(it1 != it2, ""); - static_assert(it1 != it3, ""); - static_assert(it2 == it3, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op+/difference_type.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/plus.pass.cpp similarity index 58% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op+/difference_type.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/plus.pass.cpp index 9b30f59..5673425 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op+/difference_type.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/plus.pass.cpp @@ -11,9 +11,7 @@ // reverse_iterator // requires RandomAccessIterator -// constexpr reverse_iterator operator+(difference_type n) const; -// -// constexpr in C++17 +// reverse_iterator operator+(difference_type n) const; // constexpr in C++17 #include #include @@ -22,32 +20,23 @@ #include "test_iterators.h" template -void -test(It i, typename std::iterator_traits::difference_type n, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, typename std::iterator_traits::difference_type n, It x) { const std::reverse_iterator r(i); std::reverse_iterator rr = r + n; assert(rr.base() == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s+5), 5, random_access_iterator(s)); test(s+5, 5, s); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p + 5); - constexpr RI it3 = it2 + 5; - static_assert(it1 != it2, ""); - static_assert(it1 == it3, ""); - static_assert(it2 != it3, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op--/post.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/postdecrement.pass.cpp similarity index 62% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op--/post.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/postdecrement.pass.cpp index 8b9912c..24bedad3 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op--/post.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/postdecrement.pass.cpp @@ -10,9 +10,7 @@ // reverse_iterator -// constexpr reverse_iterator operator--(int); -// -// constexpr in C++17 +// reverse_iterator operator--(int); // constexpr in C++17 #include #include @@ -21,34 +19,25 @@ #include "test_iterators.h" template -void -test(It i, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, It x) { std::reverse_iterator r(i); std::reverse_iterator rr = r--; assert(r.base() == x); assert(rr.base() == i); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "123"; test(bidirectional_iterator(s+1), bidirectional_iterator(s+2)); test(random_access_iterator(s+1), random_access_iterator(s+2)); test(s+1, s+2); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p+1); - static_assert(it1 != it2, ""); - constexpr RI it3 = std::make_reverse_iterator(p) --; - static_assert(it1 == it3, ""); - static_assert(it2 != it3, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op++/post.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/postincrement.pass.cpp similarity index 62% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op++/post.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/postincrement.pass.cpp index d7658cc..e15bfb2 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op++/post.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/postincrement.pass.cpp @@ -10,9 +10,7 @@ // reverse_iterator -// constexpr reverse_iterator operator++(int); -// -// constexpr in C++17 +// reverse_iterator operator++(int); // constexpr in C++17 #include #include @@ -21,34 +19,25 @@ #include "test_iterators.h" template -void -test(It i, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, It x) { std::reverse_iterator r(i); std::reverse_iterator rr = r++; assert(r.base() == x); assert(rr.base() == i); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "123"; test(bidirectional_iterator(s+1), bidirectional_iterator(s)); test(random_access_iterator(s+1), random_access_iterator(s)); test(s+1, s); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p+1); - static_assert(it1 != it2, ""); - constexpr RI it3 = std::make_reverse_iterator(p+1) ++; - static_assert(it1 != it3, ""); - static_assert(it2 == it3, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op--/pre.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/predecrement.pass.cpp similarity index 60% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op--/pre.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/predecrement.pass.cpp index 9ccab06..2fbd530 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op--/pre.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/predecrement.pass.cpp @@ -10,9 +10,7 @@ // reverse_iterator -// constexpr reverse_iterator& operator--(); -// -// constexpr in C++17 +// reverse_iterator& operator--(); // constexpr in C++17 #include #include @@ -21,35 +19,25 @@ #include "test_iterators.h" template -void -test(It i, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, It x) { std::reverse_iterator r(i); std::reverse_iterator& rr = --r; assert(r.base() == x); assert(&rr == &r); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "123"; test(bidirectional_iterator(s+1), bidirectional_iterator(s+2)); test(random_access_iterator(s+1), random_access_iterator(s+2)); test(s+1, s+2); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p+1); - static_assert(it1 != it2, ""); - constexpr RI it3 = -- std::make_reverse_iterator(p); - static_assert(it1 != it3, ""); - static_assert(it2 == it3, ""); - static_assert(*(--std::make_reverse_iterator(p)) == '1', ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op++/pre.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/preincrement.pass.cpp similarity index 59% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op++/pre.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/preincrement.pass.cpp index edc74fa..5efc8a3 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op++/pre.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nav/preincrement.pass.cpp @@ -10,9 +10,7 @@ // reverse_iterator -// constexpr reverse_iterator& operator++(); -// -// constexpr in C++17 +// reverse_iterator& operator++(); // constexpr in C++17 #include #include @@ -21,35 +19,25 @@ #include "test_iterators.h" template -void -test(It i, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, It x) { std::reverse_iterator r(i); std::reverse_iterator& rr = ++r; assert(r.base() == x); assert(&rr == &r); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "123"; test(bidirectional_iterator(s+1), bidirectional_iterator(s)); test(random_access_iterator(s+1), random_access_iterator(s)); test(s+1, s); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p+1); - static_assert(it1 != it2, ""); - constexpr RI it3 = ++ std::make_reverse_iterator(p+1); - static_assert(it1 == it3, ""); - static_assert(it2 != it3, ""); - static_assert(*(++std::make_reverse_iterator(p+2)) == '1', ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.make/make_reverse_iterator.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/make_reverse_iterator.pass.cpp similarity index 61% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.make/make_reverse_iterator.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/make_reverse_iterator.pass.cpp index 8228627..401eecb 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.make/make_reverse_iterator.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/make_reverse_iterator.pass.cpp @@ -7,15 +7,13 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11 + // // reverse_iterator // template -// constexpr reverse_iterator -// make_reverse_iterator(Iterator i); -// -// constexpr in C++17 +// reverse_iterator make_reverse_iterator(Iterator i); // constexpr in C++17 #include #include @@ -24,28 +22,24 @@ #include "test_iterators.h" template -void -test(It i) -{ +TEST_CONSTEXPR_CXX17 void test(It i) { const std::reverse_iterator r = std::make_reverse_iterator(i); assert(r.base() == i); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; - random_access_iteratorb(s); - random_access_iteratore(s+10); - while ( b != e ) - test ( b++ ); + random_access_iterator b(s); + random_access_iterator e(s+10); + while (b != e) + test (b++); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - constexpr auto it1 = std::make_reverse_iterator(p); - static_assert(it1.base() == p, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opdiff/test.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/minus.pass.cpp similarity index 67% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opdiff/test.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/minus.pass.cpp index ce90123..889eb8c 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opdiff/test.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/minus.pass.cpp @@ -12,10 +12,8 @@ // template // requires HasMinus -// constexpr auto operator-(const reverse_iterator& x, const reverse_iterator& y) -// -> decltype(y.base() - x.base()); -// -// constexpr in C++17 +// auto operator-(const reverse_iterator& x, const reverse_iterator& y) // constexpr in C++17 +// -> decltype(y.base() - x.base()); #include #include @@ -25,16 +23,13 @@ #include "test_iterators.h" template -void -test(It1 l, It2 r, std::ptrdiff_t x) -{ +TEST_CONSTEXPR_CXX17 void test(It1 l, It2 r, std::ptrdiff_t x) { const std::reverse_iterator r1(l); const std::reverse_iterator r2(r); assert((r1 - r2) == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { char s[3] = {0}; test(random_access_iterator(s), random_access_iterator(s), 0); test(random_access_iterator(s), random_access_iterator(s+1), 1); @@ -42,17 +37,13 @@ int main(int, char**) test(s, s, 0); test(s, s+1, 1); test(s+1, s, -1); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p+1); - static_assert( it1 - it2 == 1, ""); - static_assert( it2 - it1 == -1, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opsum/difference_type.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/plus.pass.cpp similarity index 57% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opsum/difference_type.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/plus.pass.cpp index ba38448..aeb9f89 100644 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opsum/difference_type.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.nonmember/plus.pass.cpp @@ -11,10 +11,7 @@ // reverse_iterator // template -// constexpr reverse_iterator -// operator+(Iter::difference_type n, const reverse_iterator& x); -// -// constexpr in C++17 +// reverse_iterator operator+(Iter::difference_type n, const reverse_iterator& x); // constexpr in C++17 #include #include @@ -23,32 +20,23 @@ #include "test_iterators.h" template -void -test(It i, typename std::iterator_traits::difference_type n, It x) -{ +TEST_CONSTEXPR_CXX17 void test(It i, typename std::iterator_traits::difference_type n, It x) { const std::reverse_iterator r(i); std::reverse_iterator rr = n + r; assert(rr.base() == x); } -int main(int, char**) -{ +TEST_CONSTEXPR_CXX17 bool tests() { const char* s = "1234567890"; test(random_access_iterator(s+5), 5, random_access_iterator(s)); test(s+5, 5, s); + return true; +} +int main(int, char**) { + tests(); #if TEST_STD_VER > 14 - { - constexpr const char *p = "123456789"; - typedef std::reverse_iterator RI; - constexpr RI it1 = std::make_reverse_iterator(p); - constexpr RI it2 = std::make_reverse_iterator(p + 5); - constexpr RI it3 = 5 + it2; - static_assert(it1 != it2, ""); - static_assert(it1 == it3, ""); - static_assert(it2 != it3, ""); - } + static_assert(tests(), ""); #endif - - return 0; + return 0; } diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.compile.fail.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.compile.fail.cpp deleted file mode 100644 index 2439a78..0000000 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.compile.fail.cpp +++ /dev/null @@ -1,42 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// GCC 5 does not evaluate static assertions dependent on a template parameter. -// UNSUPPORTED: gcc-5 - -// - -// reverse_iterator - -// template -// requires HasConstructor -// reverse_iterator(const reverse_iterator &u); - -// test requires - -#include - -template -void -test(U u) -{ - std::reverse_iterator r2(u); - std::reverse_iterator r1 = r2; -} - -struct base {}; -struct derived {}; - -int main(int, char**) -{ - derived d; - - test(&d); - - return 0; -} diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.conv/tested_elsewhere.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.conv/tested_elsewhere.pass.cpp deleted file mode 100644 index 1f764da..0000000 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.conv/tested_elsewhere.pass.cpp +++ /dev/null @@ -1,13 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -int main(int, char**) -{ - - return 0; -} diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.compile.fail.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.compile.fail.cpp deleted file mode 100644 index 6facdea..0000000 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.compile.fail.cpp +++ /dev/null @@ -1,43 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// GCC 5 does not evaluate static assertions dependent on a template parameter. -// UNSUPPORTED: gcc-5 - -// - -// reverse_iterator - -// template -// requires HasAssign -// reverse_iterator& -// operator=(const reverse_iterator& u); - -// test requires - -#include - -template -void -test(U u) -{ - const std::reverse_iterator r2(u); - std::reverse_iterator r1; - r1 = r2; -} - -struct base {}; -struct derived {}; - -int main(int, char**) -{ - derived d; - test(&d); - - return 0; -} diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.requirements/nothing_to_do.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.requirements/nothing_to_do.pass.cpp deleted file mode 100644 index 1f764da..0000000 --- a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.requirements/nothing_to_do.pass.cpp +++ /dev/null @@ -1,13 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -int main(int, char**) -{ - - return 0; -} diff --git a/libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iterator/types.pass.cpp b/libcxx/test/std/iterators/predef.iterators/reverse.iterators/types.pass.cpp similarity index 100% rename from libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iterator/types.pass.cpp rename to libcxx/test/std/iterators/predef.iterators/reverse.iterators/types.pass.cpp -- 2.7.4