Skip to content

Commit 0896ff4

Browse files
committed
Regex: Only use subSequence in the region() method.
Previously, the constructor of `Matcher` accepted region params, but the only call site always used the full string. This commit confines the use of `subSequence` to the `region()` method.
1 parent 762c51d commit 0896ff4

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

javalib/src/main/scala/java/util/regex/Matcher.scala

+12-7
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,17 @@ import scala.annotation.switch
1919
import scala.scalajs.js
2020

2121
final class Matcher private[regex] (
22-
private var pattern0: Pattern, private var input0: CharSequence,
23-
private var regionStart0: Int, private var regionEnd0: Int)
22+
private var pattern0: Pattern, private var input0: CharSequence)
2423
extends AnyRef with MatchResult {
2524

2625
import Matcher._
2726

2827
def pattern(): Pattern = pattern0
2928

30-
// Configuration (updated manually)
31-
private var inputstr = input0.subSequence(regionStart0, regionEnd0).toString
29+
// Region configuration (updated by reset() and region())
30+
private var regionStart0 = 0
31+
private var regionEnd0 = input0.length()
32+
private var inputstr = input0.toString()
3233

3334
// Match result (updated by successful matches)
3435
private var position: Int = 0 // within `inputstr`, not `input0`
@@ -151,8 +152,12 @@ final class Matcher private[regex] (
151152
this
152153
}
153154

154-
def reset(): Matcher =
155-
region(0, input0.length())
155+
def reset(): Matcher = {
156+
regionStart0 = 0
157+
regionEnd0 = input0.length()
158+
inputstr = input0.toString()
159+
resetMatch()
160+
}
156161

157162
def reset(input: CharSequence): Matcher = {
158163
input0 = input
@@ -229,7 +234,7 @@ final class Matcher private[regex] (
229234
// Similar difficulties as with hitEnd()
230235
//def requireEnd(): Boolean
231236

232-
// Stub methods for region management
237+
// Region management
233238

234239
def regionStart(): Int = regionStart0
235240
def regionEnd(): Int = regionEnd0

javalib/src/main/scala/java/util/regex/Pattern.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ final class Pattern private[regex] (
140140
override def toString(): String = pattern()
141141

142142
def matcher(input: CharSequence): Matcher =
143-
new Matcher(this, input, 0, input.length)
143+
new Matcher(this, input)
144144

145145
def split(input: CharSequence): Array[String] =
146146
split(input, 0)

linker/shared/src/test/scala/org/scalajs/linker/LibrarySizeTest.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ class LibrarySizeTest {
7070
)
7171

7272
testLinkedSizes(
73-
expectedFastLinkSize = 187486,
74-
expectedFullLinkSizeWithoutClosure = 174649,
75-
expectedFullLinkSizeWithClosure = 31827,
73+
expectedFastLinkSize = 186816,
74+
expectedFullLinkSizeWithoutClosure = 173972,
75+
expectedFullLinkSizeWithClosure = 31629,
7676
classDefs,
7777
moduleInitializers = MainTestModuleInitializers
7878
)

0 commit comments

Comments
 (0)