Skip to content

Commit b664d3b

Browse files
committed
Ruby flavor tests: Add test from GitHub issue
1 parent aecabd5 commit b664d3b

File tree

2 files changed

+18
-1
lines changed
  • regex/src

2 files changed

+18
-1
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,4 +362,20 @@ public void lineBreakEscape() {
362362
test("\\A\\R\\R\\z", "", "\n\n", 0, true, 0, 2);
363363
test("\\A\\R\\R\\z", "", "\r\n", 0, false);
364364
}
365+
366+
@Test
367+
public void github2412() {
368+
// Checkstyle: stop line length
369+
// 1 root capture group and 16 named capture groups
370+
Assert.assertEquals(1 + 16, compileRegex(" % (?<type>%)\n" +
371+
" | % (?<flags>(?-mix:[ #0+-]|(?-mix:(\\d+)\\$))*)\n" +
372+
" (?:\n" +
373+
" (?: (?-mix:(?<width>(?-mix:\\d+|(?-mix:\\*(?-mix:(\\d+)\\$)?))))? (?-mix:\\.(?<precision>(?-mix:\\d+|(?-mix:\\*(?-mix:(\\d+)\\$)?))))? (?-mix:<(?<name>\\w+)>)?\n" +
374+
" | (?-mix:(?<width>(?-mix:\\d+|(?-mix:\\*(?-mix:(\\d+)\\$)?))))? (?-mix:<(?<name>\\w+)>) (?-mix:\\.(?<precision>(?-mix:\\d+|(?-mix:\\*(?-mix:(\\d+)\\$)?))))?\n" +
375+
" | (?-mix:<(?<name>\\w+)>) (?<more_flags>(?-mix:[ #0+-]|(?-mix:(\\d+)\\$))*) (?-mix:(?<width>(?-mix:\\d+|(?-mix:\\*(?-mix:(\\d+)\\$)?))))? (?-mix:\\.(?<precision>(?-mix:\\d+|(?-mix:\\*(?-mix:(\\d+)\\$)?))))?\n" +
376+
" ) (?-mix:(?<type>[bBdiouxXeEfgGaAcps]))\n" +
377+
" | (?-mix:(?<width>(?-mix:\\d+|(?-mix:\\*(?-mix:(\\d+)\\$)?))))? (?-mix:\\.(?<precision>(?-mix:\\d+|(?-mix:\\*(?-mix:(\\d+)\\$)?))))? (?-mix:\\{(?<name>\\w+)\\})\n" +
378+
" )", "x").getMember("groupCount").asInt());
379+
// Checkstyle: resume line length
380+
}
365381
}

regex/src/com.oracle.truffle.regex/src/com/oracle/truffle/regex/tregex/parser/flavors/RubyFlavorProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,8 @@ private void scanForCaptureGroups() {
671671
break;
672672
default:
673673
while (match("c") || match("C-") || match("M-")) {
674-
// skip control escape sequences, \\cX, \\C-X or \\M-X, which can be nested
674+
// skip control escape sequences, \\cX, \\C-X or \\M-X, which can be
675+
// nested
675676
}
676677
// skip escaped char
677678
advance();

0 commit comments

Comments
 (0)