diff --git a/test/yarp/fixtures/newline-terminated-things.txt b/test/yarp/fixtures/newline-terminated-things.txt index 27e7c62e8e..3faf45ab4a 100644 --- a/test/yarp/fixtures/newline-terminated-things.txt +++ b/test/yarp/fixtures/newline-terminated-things.txt @@ -1,2 +1,13 @@ +# note that %i, %I, %w, and %W do not support newline termination in CRuby + +% +foo + +%q +foo + +%Q +foo + %r foo diff --git a/test/yarp/snapshots/newline-terminated-things.txt b/test/yarp/snapshots/newline-terminated-things.txt index e68ea1658e..946eb44a36 100644 --- a/test/yarp/snapshots/newline-terminated-things.txt +++ b/test/yarp/snapshots/newline-terminated-things.txt @@ -1,6 +1,15 @@ -ProgramNode(0...7)( +ProgramNode(76...106)( [], - StatementsNode(0...7)( - [RegularExpressionNode(0...7)((0...3), (3...6), (6...7), "foo", 0)] + StatementsNode(76...106)( + [StringNode(76...82)((76...78), (78...81), (81...82), "foo"), + StringNode(83...90)((83...86), (86...89), (89...90), "foo"), + StringNode(91...98)((91...94), (94...97), (97...98), "foo"), + RegularExpressionNode(99...106)( + (99...102), + (102...105), + (105...106), + "foo", + 0 + )] ) ) diff --git a/yarp/yarp.c b/yarp/yarp.c index 1725e108a0..8cc1130952 100644 --- a/yarp/yarp.c +++ b/yarp/yarp.c @@ -6224,6 +6224,7 @@ parser_lex(yp_parser_t *parser) { if (parser->current.end < parser->end) { lex_mode_push_string(parser, false, false, lex_mode_incrementor(*parser->current.end), lex_mode_terminator(*parser->current.end)); + yp_newline_list_check_append(&parser->newline_list, parser->current.end); parser->current.end++; } @@ -6234,6 +6235,7 @@ parser_lex(yp_parser_t *parser) { if (parser->current.end < parser->end) { lex_mode_push_string(parser, true, false, lex_mode_incrementor(*parser->current.end), lex_mode_terminator(*parser->current.end)); + yp_newline_list_check_append(&parser->newline_list, parser->current.end); parser->current.end++; }