set PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS to 0 and enable proper POSIX char class...
Yves Orton [Wed, 2 Sep 2009 15:37:48 +0000 (17:37 +0200)]
This also alters which Unicode properties that the POSIX character
class and the Perl "special" character classes, like \w and \d map
to. At the same time it allows a number of tests for POSIX character
class behaviour to be switched from todo to non todo. Legacy testing
is still available by changing the define and setting the
PERL_TEST_LEGACY_POSIX_CC value to true.

regcomp.h
t/op/pat.t
t/op/re_tests
t/op/reg_posixcc.t

index 2ac1be1..cd6a71a 100644 (file)
--- a/regcomp.h
+++ b/regcomp.h
@@ -31,10 +31,11 @@ typedef OP OP_4tree;                        /* Will be redefined later. */
  *
  * Personally I think 5.12 should disable this for sure. Its a bit more debatable for
  * 5.10, so for now im leaving it enabled.
+ * XXX: It is now enabled for 5.11/5.12
  *
  * -demerphq
  */
-#define PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS 1
+#define PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS 0
 
 /* Should the optimiser take positive assertions into account? */
 #define PERL_ENABLE_POSITIVE_ASSERTION_STUDY 0
index 00c5490..c610a6a 100644 (file)
@@ -2061,11 +2061,11 @@ sub run_tests {
         local $Message = "No SEGV in s/// and UTF-8";
         my $s = "s#\x{100}" x 4;
         ok $s =~ s/[^\w]/ /g;
-        if ($ENV {REAL_POSIX_CC}) {
-            iseq $s, "s  " x 4;
+        if ( $ENV{PERL_TEST_LEGACY_POSIX_CC} ) {
+            iseq $s, "s \x{100}" x 4;
         }
         else {
-            iseq $s, "s \x{100}" x 4;
+            iseq $s, "s  " x 4;
         }
     }
 
@@ -4012,7 +4012,7 @@ sub run_tests {
         };
         skip "Eval failed ($@)", 1 if $@;
         skip "PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS set to 0", 1
-              if $ENV {REAL_POSIX_CC};
+              if !$ENV{PERL_TEST_LEGACY_POSIX_CC};
         iseq join ('', @isPunctLatin1), '', 
             'IsPunct agrees with [:punct:] with explicit Latin1';
     } 
index 10bee20..b9177e9 100644 (file)
@@ -1387,7 +1387,7 @@ foo(\h)bar        foo\tbar        y       $1      \t
 # [perl #60344] Regex lookbehind failure after an (if)then|else in perl 5.10
 /\A(?(?=db2)db2|\D+)(?<!processed)\.csv\z/xms  sql_processed.csv       n       -       -
 /\N{U+0100}/   \x{100} y       $&      \x{100} # Bug #59328
-[\s][\S]       \x{a0}\x{a0}    nT      -       -       # TODO Unicode complements should not match same character
+[\s][\S]       \x{a0}\x{a0}    n       -       -       # Unicode complements should not match same character
 
 # was generating malformed utf8
 '[\x{100}\xff]'i       \x{ff}  y       $&      \x{ff}
index df12063..8b25d7d 100644 (file)
@@ -41,7 +41,7 @@ my @pats=(
            "[:^space:]",
            "[:blank:]",
            "[:^blank:]" );
-if (not $ENV{REAL_POSIX_CC}) {
+if ($ENV{PERL_TEST_LEGACY_POSIX_CC}) {
     $::TODO = "Only works under PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS = 0";
 }