[libcxx-commits] [libcxx] c24a422 - [libc++][CI][AIX] modify the equivalence classes of regex_match for locale "cs_CZ.ISO8859-2"
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Sep 18 08:03:32 PDT 2023
Author: zhijian
Date: 2023-09-18T11:03:06-04:00
New Revision: c24a422aa3155c28502ed27e4b8c50451fe627e0
URL: https://github.com/llvm/llvm-project/commit/c24a422aa3155c28502ed27e4b8c50451fe627e0
DIFF: https://github.com/llvm/llvm-project/commit/c24a422aa3155c28502ed27e4b8c50451fe627e0.diff
LOG: [libc++][CI][AIX] modify the equivalence classes of regex_match for locale "cs_CZ.ISO8859-2"
Reviewers: David Tenty, Mark de Wever
Differential Revision: https://reviews.llvm.org/D126407
Added:
Modified:
libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
Removed:
################################################################################
diff --git a/libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
index 6470b95b4edc177..57b8c13aa3c1467 100644
--- a/libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
+++ b/libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
@@ -19,7 +19,6 @@
// TODO: investigation needed
// TODO(netbsd): incomplete support for locales
// XFAIL: target={{.*}}-linux-gnu{{.*}}, netbsd, freebsd
-// XFAIL: LIBCXX-AIX-FIXME
// REQUIRES: locale.cs_CZ.ISO8859-2
#include <regex>
@@ -35,8 +34,15 @@ int main(int, char**)
{
std::cmatch m;
const char s[] = "m";
+// AIX supports character equivalence classes. What the contents of the class are depends
+// on the locale and the standards do not specify any locale other than C/POSIX.
+#if defined(_AIX)
+ assert(std::regex_match(s, m,
+ std::regex("[a[=m=]z]", std::regex_constants::awk)));
+#else
assert(std::regex_match(s, m,
std::regex("[a[=M=]z]", std::regex_constants::awk)));
+#endif
assert(m.size() == 1);
assert(!m.prefix().matched);
assert(m.prefix().first == s);
@@ -78,8 +84,13 @@ int main(int, char**)
{
std::wcmatch m;
const wchar_t s[] = L"m";
+#if defined(_AIX)
+ assert(std::regex_match(s, m, std::wregex(L"[a[=m=]z]",
+ std::regex_constants::awk)));
+#else
assert(std::regex_match(s, m, std::wregex(L"[a[=M=]z]",
std::regex_constants::awk)));
+#endif
assert(m.size() == 1);
assert(!m.prefix().matched);
assert(m.prefix().first == s);
@@ -91,6 +102,8 @@ int main(int, char**)
assert(m.position(0) == 0);
assert(m.str(0) == s);
}
+//TODO: Need to be investigated for AIX OS
+#if !defined(_AIX)
{
std::wcmatch m;
const wchar_t s[] = L"Ch";
@@ -107,6 +120,7 @@ int main(int, char**)
assert(m.position(0) == 0);
assert(m.str(0) == s);
}
+#endif
std::locale::global(std::locale("C"));
{
std::wcmatch m;
More information about the libcxx-commits
mailing list