summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y6
-rw-r--r--test/ruby/test_parse.rb3
2 files changed, 6 insertions, 3 deletions
diff --git a/parse.y b/parse.y
index ebf06a5c2d..26763e9a00 100644
--- a/parse.y
+++ b/parse.y
@@ -6563,7 +6563,6 @@ parser_number_literal_suffix(struct parser_params *parser, int mask)
}
break;
}
- literal_flush(lex_p);
return result;
}
@@ -7935,6 +7934,9 @@ parser_yylex(struct parser_params *parser)
parser->token_seen = TRUE;
retry:
last_state = lex_state;
+#ifndef RIPPER
+ token_flush(parser);
+#endif
switch (c = nextc()) {
case '\0': /* NUL */
case '\004': /* ^D */
@@ -7959,8 +7961,6 @@ parser_yylex(struct parser_params *parser)
outofloop:
pushback(c);
dispatch_scan_event(tSP);
-#else
- token_flush(parser);
#endif
goto retry;
diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb
index 819fc7df95..f92bb49e05 100644
--- a/test/ruby/test_parse.rb
+++ b/test/ruby/test_parse.rb
@@ -987,6 +987,9 @@ x = __ENCODING__
begin;
assert_syntax_error("def f r:def d; def f 0end", /unexpected/)
end;
+
+ assert_syntax_error("def\nf(000)end", /^ \^~~/)
+ assert_syntax_error("def\nf(&)end", /^ \^/)
end
def test_method_location_in_rescue