[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