[libcxx-commits] [libcxx] [libc++] <regex>: Make unmatched backrefs always succeed in ECMAScript mode (PR #154442)
via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Aug 19 18:09:38 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions ,cpp -- libcxx/include/regex libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/libcxx/include/regex b/libcxx/include/regex
index ba69f5681..205ccd625 100644
--- a/libcxx/include/regex
+++ b/libcxx/include/regex
@@ -1699,7 +1699,8 @@ void __back_ref<_CharT, _UnmatchedAlwaysSucceed>::__exec(__state& __s) const {
}
} else if constexpr (_UnmatchedAlwaysSucceed) {
__s.__do_ = __state::__accept_but_not_consume;
- __s.__node_ = this->first();;
+ __s.__node_ = this->first();
+ ;
} else {
__s.__do_ = __state::__reject;
__s.__node_ = nullptr;
diff --git a/libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp
index a6a1a9cf8..89273acc1 100644
--- a/libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp
+++ b/libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp
@@ -763,19 +763,19 @@ int main(int, char**)
assert(m.str(0) == s);
}
{
- std::cmatch m;
- const char s[] = "a";
- assert(std::regex_search(s, m, std::regex{"(a()|)\\2a"}));
- assert(m.size() == 3);
- 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 + std::char_traits<char>::length(s));
- assert(m.length(0) >= 0 && static_cast<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_search(s, m, std::regex{"(a()|)\\2a"}));
+ assert(m.size() == 3);
+ 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 + std::char_traits<char>::length(s));
+ assert(m.length(0) >= 0 && static_cast<std::size_t>(m.length(0)) == std::char_traits<char>::length(s));
+ assert(m.position(0) == 0);
+ assert(m.str(0) == s);
}
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
@@ -1519,19 +1519,19 @@ int main(int, char**)
assert(m.str(0) == s);
}
{
- std::wcmatch m;
- const wchar_t s[] = L"a";
- assert(std::regex_search(s, m, std::wregex{L"(a()|)\\2a"}));
- assert(m.size() == 3);
- 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 + std::char_traits<wchar_t>::length(s));
- assert(m.length(0) >= 0 && static_cast<std::size_t>(m.length(0)) == std::char_traits<wchar_t>::length(s));
- assert(m.position(0) == 0);
- assert(m.str(0) == s);
+ std::wcmatch m;
+ const wchar_t s[] = L"a";
+ assert(std::regex_search(s, m, std::wregex{L"(a()|)\\2a"}));
+ assert(m.size() == 3);
+ 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 + std::char_traits<wchar_t>::length(s));
+ assert(m.length(0) >= 0 && static_cast<std::size_t>(m.length(0)) == std::char_traits<wchar_t>::length(s));
+ assert(m.position(0) == 0);
+ assert(m.str(0) == s);
}
#endif // TEST_HAS_NO_WIDE_CHARACTERS
``````````
</details>
https://github.com/llvm/llvm-project/pull/154442
More information about the libcxx-commits
mailing list