[libcxx-commits] [PATCH] D126407: [libc++][CI][AIX] modify the equivalence classes of regex_match for locale "cs_CZ.ISO8859-2"

Digger Lin via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Wed May 25 12:40:04 PDT 2022


DiggerLin created this revision.
DiggerLin added reviewers: Mordante, daltenty, hubert.reinterpretcast, libc++.
Herald added a project: All.
DiggerLin requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added 1 blocking reviewer(s): libc++.

1. 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.
2. add if define(_AIX) to exclude "regex_match do not support Collating Elements: [[.ch.]] for wchar_t" and need further investigation.


Repository:
  rG LLVM Github Monorepo

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.432086.patch
Type: text/x-patch
Size: 2058 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220525/60c14303/attachment.bin>


More information about the libcxx-commits mailing list