Skip to content

Conversation

@frederick-vs-ja
Copy link
Contributor

There is possibly upcoming overhaul for <regex>. It would be easier to modify the test files if they are clang-formatted.

Some files are manually adjusted.

Adds clang-format off/on comments to avoid line break:

  • libcxx/test/std/re/re.regex/re.regex.construct/awk_oct.pass.cpp
  • libcxx/test/std/re/re.regex/re.regex.construct/deduct.verify.cpp

Adds new lines to avoid ugly grouping for =:

  • libcxx/test/std/re/re.const/re.matchflag/match_flag_type.pass.cpp
  • libcxx/test/std/re/re.const/re.synopt/syntax_option_type.pass.cpp

There is possibly upcoming overhaul for `<regex>`. It would be easier to
modify the test files if they are clang-formatted.

Some files are manually adjusted.

Adds clang-format off/on comments to avoid line break:
- libcxx/test/std/re/re.regex/re.regex.construct/awk_oct.pass.cpp
- libcxx/test/std/re/re.regex/re.regex.construct/deduct.verify.cpp

Adds new lines to avoid ugly grouping for `=`:
- libcxx/test/std/re/re.const/re.matchflag/match_flag_type.pass.cpp
- libcxx/test/std/re/re.const/re.synopt/syntax_option_type.pass.cpp
@frederick-vs-ja frederick-vs-ja requested a review from a team as a code owner October 21, 2025 06:58
@frederick-vs-ja frederick-vs-ja added libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. test-suite labels Oct 21, 2025
@llvmbot
Copy link
Member

llvmbot commented Oct 21, 2025

@llvm/pr-subscribers-libcxx

Author: A. Jiang (frederick-vs-ja)

Changes

There is possibly upcoming overhaul for &lt;regex&gt;. It would be easier to modify the test files if they are clang-formatted.

Some files are manually adjusted.

Adds clang-format off/on comments to avoid line break:

  • libcxx/test/std/re/re.regex/re.regex.construct/awk_oct.pass.cpp
  • libcxx/test/std/re/re.regex/re.regex.construct/deduct.verify.cpp

Adds new lines to avoid ugly grouping for =:

  • libcxx/test/std/re/re.const/re.matchflag/match_flag_type.pass.cpp
  • libcxx/test/std/re/re.const/re.synopt/syntax_option_type.pass.cpp

Patch is 1.23 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/164367.diff

173 Files Affected:

  • (modified) libcxx/test/std/re/re.alg/re.alg.match/awk.pass.cpp (+1282-1329)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/basic.compile.fail.cpp (+7-8)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/basic.pass.cpp (+1275-1318)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/ecma.pass.cpp (+1347-1354)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/egrep.pass.cpp (+52-57)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/exponential.pass.cpp (+4-9)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/extended.pass.cpp (+1287-1332)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/grep.pass.cpp (+22-25)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/inverted_character_classes.pass.cpp (+39-40)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/lookahead_capture.pass.cpp (+70-71)
  • (modified) libcxx/test/std/re/re.alg/re.alg.match/parse_curly_brackets.pass.cpp (+29-38)
  • (modified) libcxx/test/std/re/re.alg/re.alg.replace/exponential.pass.cpp (+11-12)
  • (modified) libcxx/test/std/re/re.alg/re.alg.replace/test1.pass.cpp (+92-80)
  • (modified) libcxx/test/std/re/re.alg/re.alg.replace/test2.pass.cpp (+92-80)
  • (modified) libcxx/test/std/re/re.alg/re.alg.replace/test3.pass.cpp (+45-50)
  • (modified) libcxx/test/std/re/re.alg/re.alg.replace/test4.pass.cpp (+41-50)
  • (modified) libcxx/test/std/re/re.alg/re.alg.replace/test5.pass.cpp (+45-50)
  • (modified) libcxx/test/std/re/re.alg/re.alg.replace/test6.pass.cpp (+41-50)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/awk.pass.cpp (+1461-1508)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/backup.pass.cpp (+31-32)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/basic.compile.fail.cpp (+7-8)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/basic.pass.cpp (+1455-1498)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp (+1517-1522)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/egrep.pass.cpp (+61-66)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/exponential.pass.cpp (+4-9)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/extended.pass.cpp (+1467-1512)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/grep.pass.cpp (+46-52)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/invert_neg_word_search.pass.cpp (+1-3)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/lookahead.pass.cpp (+3-4)
  • (modified) libcxx/test/std/re/re.alg/re.alg.search/no_update_pos.pass.cpp (+15-16)
  • (modified) libcxx/test/std/re/re.alg/re.except/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.badexp/regex_error.pass.cpp (+71-72)
  • (modified) libcxx/test/std/re/re.const/re.err/error_type.pass.cpp (+104-105)
  • (modified) libcxx/test/std/re/re.const/re.matchflag/match_flag_type.pass.cpp (+90-90)
  • (modified) libcxx/test/std/re/re.const/re.matchflag/match_multiline.pass.cpp (+242-248)
  • (modified) libcxx/test/std/re/re.const/re.matchflag/match_not_bol.pass.cpp (+15-16)
  • (modified) libcxx/test/std/re/re.const/re.matchflag/match_not_eol.pass.cpp (+49-50)
  • (modified) libcxx/test/std/re/re.const/re.matchflag/match_not_null.pass.cpp (+10-14)
  • (modified) libcxx/test/std/re/re.const/re.matchflag/match_prev_avail.pass.cpp (+45-45)
  • (modified) libcxx/test/std/re/re.const/re.synopt/syntax_option_type.pass.cpp (+93-93)
  • (modified) libcxx/test/std/re/re.def/defns.regex.collating.element/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.def/defns.regex.finite.state.machine/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.def/defns.regex.format.specifier/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.def/defns.regex.matched/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.def/defns.regex.primary.equivalence.class/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.def/defns.regex.regular.expression/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.def/defns.regex.subexpression/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.general/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.grammar/excessive_brace_count.pass.cpp (+4-6)
  • (modified) libcxx/test/std/re/re.grammar/excessive_brace_min_max.pass.cpp (+8-12)
  • (modified) libcxx/test/std/re/re.iter/re.regiter/re.regiter.cnstr/cnstr.compile.fail.cpp (+6-9)
  • (modified) libcxx/test/std/re/re.iter/re.regiter/re.regiter.cnstr/cnstr.pass.cpp (+22-23)
  • (modified) libcxx/test/std/re/re.iter/re.regiter/re.regiter.cnstr/default.pass.cpp (+7-10)
  • (modified) libcxx/test/std/re/re.iter/re.regiter/re.regiter.comp/tested_elsewhere.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.iter/re.regiter/re.regiter.deref/deref.pass.cpp (+22-23)
  • (modified) libcxx/test/std/re/re.iter/re.regiter/types.pass.cpp (+12-15)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/array.compile.fail.cpp (+9-10)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/array.pass.cpp (+38-40)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/default.pass.cpp (+8-11)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/init.compile.fail.cpp (+8-9)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/init.pass.cpp (+37-39)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/int.compile.fail.cpp (+7-9)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/int.pass.cpp (+49-53)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/vector.compile.fail.cpp (+10-12)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/vector.pass.cpp (+101-105)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.deref/deref.pass.cpp (+49-53)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.incr/post.pass.cpp (+111-116)
  • (modified) libcxx/test/std/re/re.iter/re.tokiter/types.pass.cpp (+12-15)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/assign.il.pass.cpp (+9-10)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/assign.pass.cpp (+17-15)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/assign_iter_iter_flag.pass.cpp (+21-22)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/assign_ptr_flag.pass.cpp (+8-9)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/assign_ptr_size_flag.pass.cpp (+15-16)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/assign_string_flag.pass.cpp (+9-10)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/copy.pass.cpp (+6-7)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/il.pass.cpp (+5-6)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/ptr.pass.cpp (+5-6)
  • (modified) libcxx/test/std/re/re.regex/re.regex.assign/string.pass.cpp (+5-6)
  • (modified) libcxx/test/std/re/re.regex/re.regex.const/constants.pass.cpp (+26-29)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/awk_oct.pass.cpp (+8-7)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/bad_backref.pass.cpp (+57-60)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/bad_ctype.pass.cpp (+11-13)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/bad_escape.pass.cpp (+19-22)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/bad_range.pass.cpp (+13-15)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/bad_repeat.pass.cpp (+18-20)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/copy.pass.cpp (+5-6)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp (+40-42)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/deduct.verify.cpp (+13-9)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/default.pass.cpp (+7-10)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/il_flg.pass.cpp (+39-44)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/iter_iter.pass.cpp (+15-18)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/iter_iter_flg.pass.cpp (+34-37)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/ptr.pass.cpp (+9-12)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/ptr_flg.pass.cpp (+34-37)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/ptr_size.pass.cpp (+14-17)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/ptr_size_flg.pass.cpp (+34-38)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/string.pass.cpp (+9-12)
  • (modified) libcxx/test/std/re/re.regex/re.regex.construct/string_flg.pass.cpp (+34-37)
  • (modified) libcxx/test/std/re/re.regex/re.regex.locale/imbue.pass.cpp (+8-9)
  • (modified) libcxx/test/std/re/re.regex/re.regex.nonmemb/re.regex.nmswap/swap.pass.cpp (+8-9)
  • (modified) libcxx/test/std/re/re.regex/re.regex.operations/tested_elsewhere.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.regex/re.regex.swap/swap.pass.cpp (+8-9)
  • (modified) libcxx/test/std/re/re.regex/types.pass.cpp (+12-14)
  • (modified) libcxx/test/std/re/re.req/nothing_to_do.pass.cpp (+1-5)
  • (modified) libcxx/test/std/re/re.results/range_concept_conformance.compile.pass.cpp (-2)
  • (modified) libcxx/test/std/re/re.results/re.results.acc/begin_end.pass.cpp (+13-16)
  • (modified) libcxx/test/std/re/re.results/re.results.acc/cbegin_cend.pass.cpp (+13-16)
  • (modified) libcxx/test/std/re/re.results/re.results.acc/index.pass.cpp (+29-32)
  • (modified) libcxx/test/std/re/re.results/re.results.acc/length.pass.cpp (+12-15)
  • (modified) libcxx/test/std/re/re.results/re.results.acc/position.pass.cpp (+12-15)
  • (modified) libcxx/test/std/re/re.results/re.results.acc/prefix.pass.cpp (+10-13)
  • (modified) libcxx/test/std/re/re.results/re.results.acc/str.pass.cpp (+12-15)
  • (modified) libcxx/test/std/re/re.results/re.results.acc/suffix.pass.cpp (+10-13)
  • (modified) libcxx/test/std/re/re.results/re.results.all/get_allocator.pass.cpp (+8-11)
  • (modified) libcxx/test/std/re/re.results/re.results.const/allocator.pass.cpp (+8-11)
  • (modified) libcxx/test/std/re/re.results/re.results.const/copy.pass.cpp (+13-16)
  • (modified) libcxx/test/std/re/re.results/re.results.const/copy_assign.pass.cpp (+21-24)
  • (modified) libcxx/test/std/re/re.results/re.results.const/default.pass.cpp (+12-15)
  • (modified) libcxx/test/std/re/re.results/re.results.const/move.pass.cpp (+19-22)
  • (modified) libcxx/test/std/re/re.results/re.results.const/move_assign.pass.cpp (+21-24)
  • (modified) libcxx/test/std/re/re.results/re.results.form/form1.pass.cpp (+135-130)
  • (modified) libcxx/test/std/re/re.results/re.results.form/form2.pass.cpp (+63-64)
  • (modified) libcxx/test/std/re/re.results/re.results.form/form3.pass.cpp (+51-52)
  • (modified) libcxx/test/std/re/re.results/re.results.form/form4.pass.cpp (+49-50)
  • (modified) libcxx/test/std/re/re.results/re.results.nonmember/equal.pass.cpp (+11-14)
  • (modified) libcxx/test/std/re/re.results/re.results.size/empty.pass.cpp (+10-13)
  • (modified) libcxx/test/std/re/re.results/re.results.size/empty.verify.cpp (+2-2)
  • (modified) libcxx/test/std/re/re.results/re.results.size/max_size.pass.cpp (+6-9)
  • (modified) libcxx/test/std/re/re.results/re.results.state/ready.pass.cpp (+15-20)
  • (modified) libcxx/test/std/re/re.results/re.results.swap/member_swap.pass.cpp (+12-15)
  • (modified) libcxx/test/std/re/re.results/re.results.swap/non_member_swap.pass.cpp (+12-15)
  • (modified) libcxx/test/std/re/re.results/types.pass.cpp (+14-17)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.members/compare_string_type.pass.cpp (+27-28)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.members/compare_sub_match.pass.cpp (+33-34)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.members/compare_value_type_ptr.pass.cpp (+25-26)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.members/default.pass.cpp (+13-14)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.members/length.pass.cpp (+23-24)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.members/operator_string.pass.cpp (+27-28)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.members/str.pass.cpp (+27-28)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.op/compare.pass.cpp (+55-47)
  • (modified) libcxx/test/std/re/re.submatch/re.submatch.op/stream.pass.cpp (+14-17)
  • (modified) libcxx/test/std/re/re.submatch/types.pass.cpp (+29-30)
  • (modified) libcxx/test/std/re/re.syn/cmatch.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/cregex_iterator.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/cregex_token_iterator.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/csub_match.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/regex.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/smatch.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/sregex_iterator.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/sregex_token_iterator.pass.cpp (+3-3)
  • (modified) libcxx/test/std/re/re.syn/ssub_match.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/wcmatch.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/wcregex_iterator.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/wcregex_token_iterator.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/wcsub_match.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/wregex.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/wsmatch.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/wsregex_iterator.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.syn/wsregex_token_iterator.pass.cpp (+3-3)
  • (modified) libcxx/test/std/re/re.syn/wssub_match.pass.cpp (+2-3)
  • (modified) libcxx/test/std/re/re.traits/default.pass.cpp (+19-20)
  • (modified) libcxx/test/std/re/re.traits/getloc.pass.cpp (+19-20)
  • (modified) libcxx/test/std/re/re.traits/imbue.pass.cpp (+7-8)
  • (modified) libcxx/test/std/re/re.traits/isctype.pass.cpp (+259-261)
  • (modified) libcxx/test/std/re/re.traits/length.pass.cpp (+9-10)
  • (modified) libcxx/test/std/re/re.traits/lookup_classname.pass.cpp (+199-216)
  • (modified) libcxx/test/std/re/re.traits/lookup_collatename.pass.cpp (+143-150)
  • (modified) libcxx/test/std/re/re.traits/transform.pass.cpp (+19-20)
  • (modified) libcxx/test/std/re/re.traits/transform_primary.pass.cpp (+19-24)
  • (modified) libcxx/test/std/re/re.traits/translate.pass.cpp (+13-14)
  • (modified) libcxx/test/std/re/re.traits/translate_nocase.pass.cpp (+39-40)
  • (modified) libcxx/test/std/re/re.traits/types.pass.cpp (+7-8)
  • (modified) libcxx/test/std/re/re.traits/value.pass.cpp (+85-102)
diff --git a/libcxx/test/std/re/re.alg/re.alg.match/awk.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.match/awk.pass.cpp
index 024738258c050..ef906ff21d3f1 100644
--- a/libcxx/test/std/re/re.alg/re.alg.match/awk.pass.cpp
+++ b/libcxx/test/std/re/re.alg/re.alg.match/awk.pass.cpp
@@ -21,1336 +21,1289 @@
 #include "test_macros.h"
 #include "test_iterators.h"
 
-int main(int, char**)
-{
-    {
-        std::cmatch m;
-        const char s[] = "a";
-        assert(std::regex_match(s, m, std::regex("a", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.empty());
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+1);
-        assert(m.length(0) == 1);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == "a");
-    }
-    {
-        std::cmatch m;
-        const char s[] = "ab";
-        assert(std::regex_match(s, m, std::regex("ab", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+2);
-        assert(m.length(0) == 2);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == "ab");
-    }
-    {
-        std::cmatch m;
-        const char s[] = "ab";
-        assert(!std::regex_match(s, m, std::regex("ba", std::regex_constants::awk)));
-        assert(m.size() == 0);
-        assert(m.empty());
-    }
-    {
-        std::cmatch m;
-        const char s[] = "aab";
-        assert(!std::regex_match(s, m, std::regex("ab", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "aab";
-        assert(!std::regex_match(s, m, std::regex("ab", std::regex_constants::awk),
-                                            std::regex_constants::match_continuous));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abcd";
-        assert(!std::regex_match(s, m, std::regex("bc", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abbc";
-        assert(std::regex_match(s, m, std::regex("ab*c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+4);
-        assert(m.length(0) == 4);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "ababc";
-        assert(std::regex_match(s, m, std::regex("(ab)*c", std::regex_constants::awk)));
-        assert(m.size() == 2);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+5);
-        assert(m.length(0) == 5);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-        assert(m.length(1) == 2);
-        assert(m.position(1) == 2);
-        assert(m.str(1) == "ab");
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abcdefghijk";
-        assert(!std::regex_match(s, m, std::regex("cd((e)fg)hi",
-                                 std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abc";
-        assert(std::regex_match(s, m, std::regex("^abc", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+3);
-        assert(m.length(0) == 3);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abcd";
-        assert(!std::regex_match(s, m, std::regex("^abc", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "aabc";
-        assert(!std::regex_match(s, m, std::regex("^abc", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abc";
-        assert(std::regex_match(s, m, std::regex("abc$", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+3);
-        assert(m.length(0) == 3);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "efabc";
-        assert(!std::regex_match(s, m, std::regex("abc$", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "efabcg";
-        assert(!std::regex_match(s, m, std::regex("abc$", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abc";
-        assert(std::regex_match(s, m, std::regex("a.c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+3);
-        assert(m.length(0) == 3);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "acc";
-        assert(std::regex_match(s, m, std::regex("a.c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+3);
-        assert(m.length(0) == 3);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "acc";
-        assert(std::regex_match(s, m, std::regex("a.c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+3);
-        assert(m.length(0) == 3);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abcdef";
-        assert(std::regex_match(s, m, std::regex("(.*).*", std::regex_constants::awk)));
-        assert(m.size() == 2);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == s+6);
-        assert(m.length(0) == 6);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-        assert(m.length(1) == 6);
-        assert(m.position(1) == 0);
-        assert(m.str(1) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "bc";
-        assert(!std::regex_match(s, m, std::regex("(a*)*", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abbc";
-        assert(!std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abbbc";
-        assert(std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abbbbc";
-        assert(std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abbbbbc";
-        assert(std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "adefc";
-        assert(!std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "abbbbbbc";
-        assert(!std::regex_match(s, m, std::regex("ab{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "adec";
-        assert(!std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "adefc";
-        assert(std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "adefgc";
-        assert(std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "adefghc";
-        assert(std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "adefghic";
-        assert(!std::regex_match(s, m, std::regex("a.{3,5}c", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "tournament";
-        assert(std::regex_match(s, m, std::regex("tour|to|tournament",
-                                              std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "tournamenttotour";
-        assert(std::regex_match(s, m, std::regex("(tour|to|tournament)+",
-               std::regex_constants::awk | std::regex_constants::nosubs)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "ttotour";
-        assert(std::regex_match(s, m, std::regex("(tour|to|t)+",
-                                              std::regex_constants::awk)));
-        assert(m.size() == 2);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-        assert(m.length(1) == 4);
-        assert(m.position(1) == 3);
-        assert(m.str(1) == "tour");
-    }
-    {
-        std::cmatch m;
-        const char s[] = "-ab,ab-";
-        assert(!std::regex_match(s, m, std::regex("-(.*),\1-", std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "-ab,ab-";
-        assert(std::regex_match(s, m, std::regex("-.*,.*-", std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "a";
-        assert(std::regex_match(s, m, std::regex("^[a]$",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert(m.length(0) == 1);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == "a");
-    }
-    {
-        std::cmatch m;
-        const char s[] = "a";
-        assert(std::regex_match(s, m, std::regex("^[ab]$",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert(m.length(0) == 1);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == "a");
-    }
-    {
-        std::cmatch m;
-        const char s[] = "c";
-        assert(std::regex_match(s, m, std::regex("^[a-f]$",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert(m.length(0) == 1);
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "g";
-        assert(!std::regex_match(s, m, std::regex("^[a-f]$",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "Iraqi";
-        assert(!std::regex_match(s, m, std::regex("q[^u]",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "Iraq";
-        assert(!std::regex_match(s, m, std::regex("q[^u]",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "AmB";
-        assert(std::regex_match(s, m, std::regex("A[[:lower:]]B",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "AMB";
-        assert(!std::regex_match(s, m, std::regex("A[[:lower:]]B",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "AMB";
-        assert(std::regex_match(s, m, std::regex("A[^[:lower:]]B",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 1);
-        assert(!m.prefix().matched);
-        assert(m.prefix().first == s);
-        assert(m.prefix().second == m[0].first);
-        assert(!m.suffix().matched);
-        assert(m.suffix().first == m[0].second);
-        assert(m.suffix().second == m[0].second);
-        assert((std::size_t)m.length(0) == std::char_traits<char>::length(s));
-        assert(m.position(0) == 0);
-        assert(m.str(0) == s);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "AmB";
-        assert(!std::regex_match(s, m, std::regex("A[^[:lower:]]B",
-                                                 std::regex_constants::awk)));
-        assert(m.size() == 0);
-    }
-    {
-        std::cmatch m;
-        const char s[] = "A5B";
-        assert(!std::regex_match(s, m, std::regex("A[^[:lower:]0-9]B",
-                                                 std::regex...
[truncated]

Copy link
Contributor

@philnik777 philnik777 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't format all the tests just because there might be something coming up. If there is actually something we can do that in a targeted manner instead.

@frederick-vs-ja
Copy link
Contributor Author

Please don't format all the tests just because there might be something coming up. If there is actually something we can do that in a targeted manner instead.

Hmm, previous we formatted container tests in #126499... I think it's reasonable to format all regex tests for a similar reason too.

@philnik777
Copy link
Contributor

Please don't format all the tests just because there might be something coming up. If there is actually something we can do that in a targeted manner instead.

Hmm, previous we formatted container tests in #126499... I think it's reasonable to format all regex tests for a similar reason too.

I don't know why we did that, but IMO that wasn't a good choice from what I can tell.

@ldionne
Copy link
Member

ldionne commented Oct 24, 2025

@philnik777 Really, we should be formatting the whole code base. It's just that the patch that does that is going to be humongous, not even reviewable on Github. There's too much code.

As a result, we've been reformatting smaller bits and pieces from time to time, and I think that's acceptable, if done as their own separate patch (which can then be added to .git-blame-ignore-revs).

@philnik777
Copy link
Contributor

@philnik777 Really, we should be formatting the whole code base. It's just that the patch that does that is going to be humongous, not even reviewable on Github. There's too much code.

As a result, we've been reformatting smaller bits and pieces from time to time, and I think that's acceptable, if done as their own separate patch (which can then be added to .git-blame-ignore-revs).

I don't disagree. I do think that we should require a clear intent to modify the code in the near future though. Otherwise there isn't much of a difference between a single patch and someone feeling like formatting entire test suite. "There might be a patch at some point in the future modifying this code" IMO doesn't reach the bar of "this is reasonable to format". Re. the Container formatting, I can't remember what went on in February, so with the current information I have I don't think it was a good idea. If we were actually modifying a significant amount of tests then sure - if we only modified one or two of the tests then IMO it was too broad of a formatting. I'm not convinced that we got anywhere near modifying 1300 tests - an NFC patch to format the tests that we were actually modifying would have been the better alternative IMO.

@Zingam
Copy link
Contributor

Zingam commented Oct 28, 2025

With the ongoing work in making the containers constexpr compatible, I find it was good that it was already formatted, as several new contributors joined in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. test-suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants