File tree Expand file tree Collapse file tree 2 files changed +18
-3
lines changed
test/prism/snapshots/seattlerb Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -9535,7 +9535,9 @@ parser_lex(pm_parser_t *parser) {
9535
9535
case '\r':
9536
9536
parser->current.end++;
9537
9537
if (peek(parser) != '\n') {
9538
- pm_token_buffer_push(&token_buffer, '\\');
9538
+ if (lex_mode->as.regexp.terminator != '\r') {
9539
+ pm_token_buffer_push(&token_buffer, '\\');
9540
+ }
9539
9541
pm_token_buffer_push(&token_buffer, '\r');
9540
9542
break;
9541
9543
}
@@ -9563,7 +9565,20 @@ parser_lex(pm_parser_t *parser) {
9563
9565
escape_read(parser, &token_buffer.buffer, PM_ESCAPE_FLAG_REGEXP);
9564
9566
break;
9565
9567
default:
9566
- if (lex_mode->as.regexp.terminator == '/' && peeked == '/') {
9568
+ if (lex_mode->as.regexp.terminator == peeked) {
9569
+ // Some characters when they are used as the
9570
+ // terminator also receive an escape. They are
9571
+ // enumerated here.
9572
+ switch (peeked) {
9573
+ case '$': case ')': case '*': case '+':
9574
+ case '.': case '>': case '?': case ']':
9575
+ case '^': case '|': case '}':
9576
+ pm_token_buffer_push(&token_buffer, '\\');
9577
+ break;
9578
+ default:
9579
+ break;
9580
+ }
9581
+
9567
9582
pm_token_buffer_push(&token_buffer, peeked);
9568
9583
parser->current.end++;
9569
9584
break;
Original file line number Diff line number Diff line change 8
8
├── opening_loc: (1,0)-(1,3) = "%r'"
9
9
├── content_loc: (1,3)-(1,5) = "\\'"
10
10
├── closing_loc: (1,5)-(1,6) = "'"
11
- └── unescaped: "\\ '"
11
+ └── unescaped: "'"
You can’t perform that action at this time.
0 commit comments