[libcxx-commits] [PATCH] D126407: [libc++][CI][AIX] modify the equivalence classes of regex_match for locale "cs_CZ.ISO8859-2"
Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Sep 18 08:03:41 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc24a422aa315: [libc++][CI][AIX] modify the equivalence classes of regex_match for localeā¦ (authored by zhijian <zhijian at ca.ibm.com>).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126407/new/
https://reviews.llvm.org/D126407
Files:
libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
Index: libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
===================================================================
--- libcxx/test/std/re/re.alg/re.alg.match/awk.locale.pass.cpp
+++ 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 @@
{
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 @@
{
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 @@
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 @@
assert(m.position(0) == 0);
assert(m.str(0) == s);
}
+#endif
std::locale::global(std::locale("C"));
{
std::wcmatch m;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126407.556952.patch
Type: text/x-patch
Size: 2058 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20230918/6e178eb1/attachment-0001.bin>
More information about the libcxx-commits
mailing list