Skip to content

Commit a1f72a5

Browse files
committed
[Bug #20579] ripper: Dispatch spaces at END-OF-INPUT without newline
1 parent 7f47469 commit a1f72a5

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

parse.y

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10684,6 +10684,9 @@ parser_yylex(struct parser_params *p)
1068410684
p->lex.nextline = p->lex.lastline;
1068510685
set_lastline(p, prevline);
1068610686
case -1: /* EOF no decrement*/
10687+
if (c == -1 && space_seen) {
10688+
dispatch_scan_event(p, tSP);
10689+
}
1068710690
lex_goto_eol(p);
1068810691
if (c != -1) {
1068910692
token_flush(p);

test/ripper/test_lexer.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,16 @@ def test_invalid_escape_string
499499
assert_lexer(expected, code)
500500
end
501501

502+
def test_spaces_at_eof
503+
code = "1\n\t \t"
504+
expected = [
505+
[[1, 0], :on_int, "1", state(:EXPR_END)],
506+
[[1, 1], :on_nl, "\n", state(:EXPR_BEG)],
507+
[[2, 0], :on_sp, "\t \t", state(:EXPR_END)],
508+
]
509+
assert_lexer(expected, code)
510+
end
511+
502512
def assert_lexer(expected, code)
503513
assert_equal(code, Ripper.tokenize(code).join(""))
504514
assert_equal(expected, result = Ripper.lex(code),

0 commit comments

Comments
 (0)