Skip to content

Commit 7640a80

Browse files
committed
simpleCGMustCopy set when transitioning from unanchored to anchored final state
1 parent a71783f commit 7640a80

File tree

2 files changed

+9
-1
lines changed
  • regex/src
    • com.oracle.truffle.regex.test/src/com/oracle/truffle/regex/tregex/test
    • com.oracle.truffle.regex/src/com/oracle/truffle/regex/tregex/dfa

2 files changed

+9
-1
lines changed

regex/src/com.oracle.truffle.regex.test/src/com/oracle/truffle/regex/tregex/test/JsTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,4 +227,12 @@ public void quantifierOverflow() {
227227
test(String.format("x{%d,}", max + 1), "", "x", 0, false);
228228
expectSyntaxError(String.format("x{%d,%d}", max + 1, max), "", JsErrorMessages.QUANTIFIER_OUT_OF_ORDER);
229229
}
230+
231+
@Test
232+
public void gr45479() {
233+
// minimized test case
234+
test("\\s*(p$)?", "", "px", 0, true, 0, 0, -1, -1);
235+
// original test case
236+
test("^(\\d{1,2})[:.,;\\-]?(\\d{1,2})?[:.,;\\-]?(\\d{1,2})?[:.,;\\-]?(\\d{1,3})?[:.,;\\-]?\\s*([ap](?=[m]|^\\w|$))?", "i", "08:00:00.000 PDT", 0, true, 0, 13, 0, 2, 3, 5, 6, 8, 9, 12, -1, -1);
237+
}
230238
}

regex/src/com.oracle.truffle.regex/src/com/oracle/truffle/regex/tregex/dfa/DFAGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ private void expandState(DFAStateNodeBuilder state) {
438438
if (isGenericCG()) {
439439
transition.getTarget().incPredecessors();
440440
}
441-
if (state.isUnAnchoredFinalState() && !successorState.isFinalState()) {
441+
if (state.isUnAnchoredFinalState() && !successorState.isUnAnchoredFinalState()) {
442442
simpleCGMustCopy = true;
443443
}
444444
}

0 commit comments

Comments
 (0)