From: Jonathan Wakely Date: Fri, 26 Sep 2025 14:02:43 +0000 (+0100) Subject: libstdc++: Fix VERIFY(idx = 1) bugs in tests X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f6c71c20792c8249b6380a4a9fd741fe1b094c9a;p=thirdparty%2Fgcc.git libstdc++: Fix VERIFY(idx = 1) bugs in tests These should be checking for equality, not performing assignments. The tests for from_range on associative containers were actually checking the wrong thing, but the bug in the is_equal function was making the incorrect checks pass anyway, because all the values being used were non-zero, so the result of lhs.id = rhs.id was true, but would have been false if lhs.id == rhs.id had been used as intended. libstdc++-v3/ChangeLog: * testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc: Fix assignment used instead of equality comparison. * testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc: Likewise. * testsuite/23_containers/map/cons/from_range.cc: Fix is_equal function and expected value of comparison functions after construction. * testsuite/23_containers/multimap/cons/from_range.cc: Likewise. * testsuite/23_containers/multiset/cons/from_range.cc: Likewise. * testsuite/23_containers/set/cons/from_range.cc: Likewise. * testsuite/23_containers/unordered_map/cons/from_range.cc: Fix is_equal functions. * testsuite/23_containers/unordered_multimap/cons/from_range.cc: Likewise. * testsuite/23_containers/unordered_multiset/cons/from_range.cc: Likewise. * testsuite/23_containers/unordered_set/cons/from_range.cc: Likewise. * testsuite/25_algorithms/minmax/constrained.cc: Fix assignment used instead of equality comparison. * testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc: Likewise. --- diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc index 9fc143c1473b..4d2a8ba46c39 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc @@ -86,7 +86,7 @@ test01() } VERIFY( test ); VERIFY( i1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc index 85d5e6dbbf33..55e39dd9e89a 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc @@ -86,7 +86,7 @@ test01() } VERIFY( test ); VERIFY( l1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc index a698baeab814..5b23d6c27b8c 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc @@ -87,7 +87,7 @@ test01() } VERIFY( test ); VERIFY( ll1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc index 47c20ce09585..00afc942cdcc 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc @@ -86,7 +86,7 @@ test01() } VERIFY( test ); VERIFY( ul1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc index ad81b67af87a..f44eb1ddc316 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc @@ -87,7 +87,7 @@ test01() } VERIFY( test ); VERIFY( ull1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc index 88e1da7dff4e..1aec77f6a698 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc @@ -88,7 +88,7 @@ test01() } VERIFY( test ); VERIFY( i1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc index 98388f99f5ce..41e9d669774f 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc @@ -88,7 +88,7 @@ test01() } VERIFY( test ); VERIFY( l1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc index d7a49f5cea6f..5c7a25b3e9e6 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc @@ -88,7 +88,7 @@ test01() } VERIFY( test ); VERIFY( ll1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc index b5537967ceb6..d33289a88931 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc @@ -88,7 +88,7 @@ test01() } VERIFY( test ); VERIFY( ul1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc index 503101f48749..67c963942212 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc @@ -88,7 +88,7 @@ test01() } VERIFY( test ); VERIFY( ull1 == 7 ); - VERIFY( idx1 = 1 ); + VERIFY( idx1 == 1 ); try { diff --git a/libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc index 3a9fede04348..145390069650 100644 --- a/libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc +++ b/libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc @@ -61,7 +61,7 @@ constexpr bool is_equal(std::less, std::less) { return true; } constexpr bool is_equal(StateCmp lhs, StateCmp rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } constexpr auto get0 = [](auto const& t) { using std::get; @@ -103,12 +103,12 @@ do_test(Alloc alloc, Cmp cmp) std::map m4(std::from_range, Range(a, a+4), cmp); VERIFY( eq(m4, {a, 4}) ); VERIFY( m4.get_allocator() == Alloc() ); - VERIFY( is_equal(m4.key_comp(), Cmp()) ); + VERIFY( is_equal(m4.key_comp(), cmp) ); std::map m9(std::from_range, Range(a, a+9), alloc); VERIFY( eq(m9, {a, 9}) ); VERIFY( m9.get_allocator() == alloc ); - VERIFY( is_equal(m9.key_comp(), cmp) ); + VERIFY( is_equal(m9.key_comp(), Cmp()) ); std::map mr(std::from_range, Range(a, a+14), cmp, alloc); VERIFY( eq(mr, {a, 9}) ); diff --git a/libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc index 5907bab9878c..bb79720cdd8e 100644 --- a/libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc +++ b/libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc @@ -61,7 +61,7 @@ constexpr bool is_equal(std::less, std::less) { return true; } constexpr bool is_equal(StateCmp lhs, StateCmp rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } constexpr auto get0 = [](auto const& t) { using std::get; @@ -103,12 +103,12 @@ do_test(Alloc alloc, Cmp cmp) std::multimap m4(std::from_range, Range(a, a+4), cmp); VERIFY( eq(m4, {a, 4}) ); VERIFY( m4.get_allocator() == Alloc() ); - VERIFY( is_equal(m4.key_comp(), Cmp()) ); + VERIFY( is_equal(m4.key_comp(), cmp) ); std::multimap m9(std::from_range, Range(a, a+9), alloc); VERIFY( eq(m9, {a, 9}) ); VERIFY( m9.get_allocator() == alloc ); - VERIFY( is_equal(m9.key_comp(), cmp) ); + VERIFY( is_equal(m9.key_comp(), Cmp()) ); std::multimap mr(std::from_range, Range(a, a+14), cmp, alloc); VERIFY( eq(mr, {a, 14}) ); diff --git a/libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc index cdba7eb2d632..aa9be9c30752 100644 --- a/libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc +++ b/libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc @@ -48,7 +48,7 @@ constexpr bool is_equal(std::less, std::less) { return true; } constexpr bool is_equal(StateCmp lhs, StateCmp rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } template constexpr void @@ -82,12 +82,12 @@ do_test(Alloc alloc, Cmp cmp) std::set s4(std::from_range, Range(a, a+4), cmp); VERIFY( eq(s4, {a, 4}) ); VERIFY( s4.get_allocator() == Alloc() ); - VERIFY( is_equal(s4.key_comp(), Cmp()) ); + VERIFY( is_equal(s4.key_comp(), cmp) ); std::set s9(std::from_range, Range(a, a+9), alloc); VERIFY( eq(s9, {a, 9}) ); VERIFY( s9.get_allocator() == alloc ); - VERIFY( is_equal(s9.key_comp(), cmp) ); + VERIFY( is_equal(s9.key_comp(), Cmp()) ); std::set sr(std::from_range, Range(a, a+14), cmp, alloc); VERIFY( eq(sr, {a, 9}) ); diff --git a/libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc index efde05d729cf..23922bf28575 100644 --- a/libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc +++ b/libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc @@ -47,7 +47,7 @@ constexpr bool is_equal(std::less, std::less) { return true; } constexpr bool is_equal(StateCmp lhs, StateCmp rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } template constexpr void @@ -81,12 +81,12 @@ do_test(Alloc alloc, Cmp cmp) std::set s4(std::from_range, Range(a, a+4), cmp); VERIFY( eq(s4, {a, 4}) ); VERIFY( s4.get_allocator() == Alloc() ); - VERIFY( is_equal(s4.key_comp(), Cmp()) ); + VERIFY( is_equal(s4.key_comp(), cmp) ); std::set s9(std::from_range, Range(a, a+9), alloc); VERIFY( eq(s9, {a, 9}) ); VERIFY( s9.get_allocator() == alloc ); - VERIFY( is_equal(s9.key_comp(), cmp) ); + VERIFY( is_equal(s9.key_comp(), Cmp()) ); std::set sr(std::from_range, Range(a, a+14), cmp, alloc); VERIFY( eq(sr, {a, 9}) ); diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc index 04479a5e54d8..cad102e959f9 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc @@ -100,10 +100,10 @@ constexpr bool is_equal(std::equal_to, std::equal_to) { return true; } constexpr bool is_equal(StateHash lhs, StateHash rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } constexpr bool is_equal(StateEq lhs, StateEq rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } template constexpr void diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc index 4567bd8aa914..ab30e3c6761b 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc @@ -114,10 +114,10 @@ constexpr bool is_equal(std::equal_to, std::equal_to) { return true; } constexpr bool is_equal(StateHash lhs, StateHash rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } constexpr bool is_equal(StateEq lhs, StateEq rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } template constexpr void diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc index d44598d7d615..ff0547138323 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc @@ -85,11 +85,11 @@ constexpr bool is_equal(std::equal_to, std::equal_to) { return true; } constexpr bool is_equal(StateHash lhs, StateHash rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } constexpr bool is_equal(StateEq lhs, StateEq rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } template constexpr void diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc index 8259be871f6e..e00e2fb6c0ea 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc @@ -84,11 +84,11 @@ constexpr bool is_equal(std::equal_to, std::equal_to) { return true; } constexpr bool is_equal(StateHash lhs, StateHash rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } constexpr bool is_equal(StateEq lhs, StateEq rhs) -{ return lhs.state = rhs.state; } +{ return lhs.state == rhs.state; } template constexpr void diff --git a/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc index 270fd45132d1..8f8df4314671 100644 --- a/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc +++ b/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc @@ -101,26 +101,26 @@ test04() auto p = ranges::minmax({1,2}, counted_less{}); VERIFY( counter == 1 ); - VERIFY( p.min = 1 ); - VERIFY( p.max = 2 ); + VERIFY( p.min == 1 ); + VERIFY( p.max == 2 ); counter = 0; p = ranges::minmax({1,2,3}, counted_less{}); VERIFY( counter == 3 ); - VERIFY( p.min = 1 ); - VERIFY( p.max = 3 ); + VERIFY( p.min == 1 ); + VERIFY( p.max == 3 ); counter = 0; p = ranges::minmax({1,2,3,4,5,6,7,8,9,10}, counted_less{}); VERIFY( counter <= 15 ); - VERIFY( p.min = 1 ); - VERIFY( p.max = 10 ); + VERIFY( p.min == 1 ); + VERIFY( p.max == 10 ); counter = 0; p = ranges::minmax({10,9,8,7,6,5,4,3,2,1}, counted_less{}); VERIFY( counter <= 15 ); - VERIFY( p.min = 1 ); - VERIFY( p.max = 10 ); + VERIFY( p.min == 1 ); + VERIFY( p.max == 10 ); } void diff --git a/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc index 0f3728299a37..ee3e84d42d82 100644 --- a/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc @@ -36,8 +36,8 @@ void test01() tm time1; iss >> get_time(&time1, L"%H:%M:%S %Y"); VERIFY( static_cast(iss) ); - VERIFY(time1.tm_hour = 12); - VERIFY(time1.tm_min = 1); + VERIFY(time1.tm_hour == 12); + VERIFY(time1.tm_min == 1); VERIFY(time1.tm_sec == 30); VERIFY(time1.tm_year == 71); }