Skip to content

Commit 8ba77e0

Browse files
committed
more refactoring
1 parent f1a8a9e commit 8ba77e0

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

Sources/_StringProcessing/Engine/MEQuantify.swift

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -58,31 +58,36 @@ extension Processor {
5858
trips += 1
5959
}
6060

61-
var savePoint = startQuantifierSavePoint(
62-
isScalarSemantics: payload.isScalarSemantics
63-
)
61+
if maxExtraTrips == 0 {
62+
// We're done
63+
return true
64+
}
65+
66+
guard let next = _doQuantifyMatch(payload) else {
67+
return true
68+
}
69+
maxExtraTrips = maxExtraTrips.map { $0 - 1 }
70+
71+
// Remember the range of valid positions in case we can create a quantified
72+
// save point
73+
let rangeStart = currentPosition
74+
var rangeEnd = currentPosition
75+
currentPosition = next
76+
6477
while true {
6578
if maxExtraTrips == 0 { break }
66-
maxExtraTrips = maxExtraTrips.map({$0 - 1})
67-
if payload.quantKind == .eager {
68-
savePoint.updateRange(newEnd: currentPosition)
69-
}
7079

71-
let next = _doQuantifyMatch(payload)
72-
guard let idx = next else {
73-
if savePoint.isQuantified {
74-
// The last save point has saved the current, non-matching position,
75-
// so it's unneeded.
76-
savePoint.shrinkRange(input)
77-
}
80+
guard let next = _doQuantifyMatch(payload) else {
7881
break
7982
}
80-
currentPosition = idx
81-
trips += 1
83+
maxExtraTrips = maxExtraTrips.map({$0 - 1})
84+
rangeEnd = currentPosition
85+
currentPosition = next
8286
}
8387

84-
if savePoint.isQuantified {
85-
savePoints.append(savePoint)
88+
if payload.quantKind == .eager {
89+
savePoints.append(makeQuantifiedSavePoint(
90+
rangeStart..<rangeEnd, isScalarSemantics: payload.isScalarSemantics))
8691
}
8792
return true
8893
}
@@ -108,6 +113,7 @@ extension Processor {
108113
// to the final position.
109114
let rangeStart = currentPosition
110115
var rangeEnd = currentPosition
116+
currentPosition = next
111117
while true {
112118
guard let next = _doQuantifyMatch(payload) else { break }
113119
rangeEnd = currentPosition

0 commit comments

Comments
 (0)