aboutsummaryrefslogtreecommitdiff
path: root/src/regexp
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2018-03-29 15:00:47 -0700
committerIan Lance Taylor <iant@golang.org>2018-03-29 22:31:57 +0000
commit9967582f770f62f72a349ec276e00dba8639aa26 (patch)
tree335318f9f7d48dff4f65df4d0e109fbefc559613 /src/regexp
parent64bf90576e60bce0c2a6acd3d42855ffdc1c2654 (diff)
downloadgo-9967582f770f62f72a349ec276e00dba8639aa26.tar.gz
go-9967582f770f62f72a349ec276e00dba8639aa26.zip
regexp/syntax: update perl script to preserve \s behavior
Incorporate https://code-review.googlesource.com/#/c/re2/+/3050/ from the re2 repository. Description of that change: Preserve the original behaviour of \s. Prior to Perl 5.18, \s did not match vertical tab. Bake that into make_perl_groups.pl as an override so that perl_groups.cc retains its current definitions when rebuilt with newer versions of Perl. This fixes make_perl_groups.pl to generate an unchanged perl_groups.go with perl versions 5.18 and later. Fixes #22057 Change-Id: I9a56e9660092ed6c1ff1045b4a3847de355441a7 Reviewed-on: https://go-review.googlesource.com/103517 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/regexp')
-rwxr-xr-xsrc/regexp/syntax/make_perl_groups.pl8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/regexp/syntax/make_perl_groups.pl b/src/regexp/syntax/make_perl_groups.pl
index dc6d232a76..80a2c9ae6b 100755
--- a/src/regexp/syntax/make_perl_groups.pl
+++ b/src/regexp/syntax/make_perl_groups.pl
@@ -34,6 +34,12 @@
"\\w",
);
+%overrides = (
+ # Prior to Perl 5.18, \s did not match vertical tab.
+ # RE2 preserves that original behaviour.
+ "\\s:11" => 0,
+);
+
sub ComputeClass($) {
my @ranges;
my ($class) = @_;
@@ -41,7 +47,7 @@ sub ComputeClass($) {
my $start = -1;
for (my $i=0; $i<=129; $i++) {
if ($i == 129) { $i = 256; }
- if ($i <= 128 && chr($i) =~ $regexp) {
+ if ($i <= 128 && ($overrides{"$class:$i"} // chr($i) =~ $regexp)) {
if ($start < 0) {
$start = $i;
}