aboutsummaryrefslogtreecommitdiff
path: root/src/regexp
diff options
context:
space:
mode:
authorapocelipes <seve3r@outlook.com>2024-03-25 14:13:35 +0000
committerGopher Robot <gobot@golang.org>2024-03-26 19:50:03 +0000
commit51a96f86f7a0604f4b3010b8a688f9b66a5c5acb (patch)
treed32333fccfc9074dde9c199b571cc45df977f162 /src/regexp
parent2b5e99455d4fba77a2fa79aed53f36fcc9cf8d1f (diff)
downloadgo-51a96f86f7a0604f4b3010b8a688f9b66a5c5acb.tar.gz
go-51a96f86f7a0604f4b3010b8a688f9b66a5c5acb.zip
regexp/syntax: simplify the code
Use the slices package and the built-in max to simplify the code. There's no noticeable performance change in this modification. Change-Id: I96e46ba8ab1323f1ba0b8c9b827836e217772cf2 GitHub-Last-Rev: f0111ac7e220f7dac03290125a3a83831012f235 GitHub-Pull-Request: golang/go#66511 Reviewed-on: https://go-review.googlesource.com/c/go/+/573978 Auto-Submit: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: qiulaidongfeng <2645477756@qq.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/regexp')
-rw-r--r--src/regexp/syntax/parse.go4
-rw-r--r--src/regexp/syntax/regexp.go19
2 files changed, 4 insertions, 19 deletions
diff --git a/src/regexp/syntax/parse.go b/src/regexp/syntax/parse.go
index 6a11b53fb1..6ed6491c80 100644
--- a/src/regexp/syntax/parse.go
+++ b/src/regexp/syntax/parse.go
@@ -249,9 +249,7 @@ func (p *parser) calcSize(re *Regexp, force bool) int64 {
size = int64(re.Max)*sub + int64(re.Max-re.Min)
}
- if size < 1 {
- size = 1
- }
+ size = max(1, size)
p.size[re] = size
return size
}
diff --git a/src/regexp/syntax/regexp.go b/src/regexp/syntax/regexp.go
index 4fa7d0e2f8..8ad3653abb 100644
--- a/src/regexp/syntax/regexp.go
+++ b/src/regexp/syntax/regexp.go
@@ -8,6 +8,7 @@ package syntax
// In this package, re is always a *Regexp and r is always a rune.
import (
+ "slices"
"strconv"
"strings"
"unicode"
@@ -75,24 +76,10 @@ func (x *Regexp) Equal(y *Regexp) bool {
}
case OpLiteral, OpCharClass:
- if len(x.Rune) != len(y.Rune) {
- return false
- }
- for i, r := range x.Rune {
- if r != y.Rune[i] {
- return false
- }
- }
+ return slices.Equal(x.Rune, y.Rune)
case OpAlternate, OpConcat:
- if len(x.Sub) != len(y.Sub) {
- return false
- }
- for i, sub := range x.Sub {
- if !sub.Equal(y.Sub[i]) {
- return false
- }
- }
+ return slices.EqualFunc(x.Sub, y.Sub, func(a, b *Regexp) bool { return a.Equal(b) })
case OpStar, OpPlus, OpQuest:
if x.Flags&NonGreedy != y.Flags&NonGreedy || !x.Sub[0].Equal(y.Sub[0]) {