summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y13
-rw-r--r--test/ripper/test_scanner_events.rb3
2 files changed, 9 insertions, 7 deletions
diff --git a/parse.y b/parse.y
index 4275f245b8..d0f43156e9 100644
--- a/parse.y
+++ b/parse.y
@@ -6207,15 +6207,14 @@ parser_parse_string(struct parser_params *parser, NODE *quote)
pushback(c);
if (tokadd_string(func, term, paren, &quote->nd_nest,
&enc) == -1) {
- if (func & STR_FUNC_REGEXP) {
- if (parser->eofp)
+ if (parser->eofp) {
+ if (func & STR_FUNC_REGEXP) {
compile_error(PARSER_ARG "unterminated regexp meets end of file");
- return tREGEXP_END;
- }
- else {
- if (parser->eofp)
+ }
+ else {
compile_error(PARSER_ARG "unterminated string meets end of file");
- return tSTRING_END;
+ }
+ quote->u2.id = STR_TERM_END;
}
}
diff --git a/test/ripper/test_scanner_events.rb b/test/ripper/test_scanner_events.rb
index 8cf7ac1220..027d56d1e6 100644
--- a/test/ripper/test_scanner_events.rb
+++ b/test/ripper/test_scanner_events.rb
@@ -109,6 +109,9 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase
[[3, 0], :on_heredoc_end, "EOS"]
],
Ripper.lex("<<~EOS\n heredoc\nEOS")
+ assert_equal [[[1, 0], :on_tstring_beg, "'"],
+ [[1, 1], :on_tstring_content, "foo"]],
+ Ripper.lex("'foo")
end
def test_location