diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-01-04 12:11:37 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-01-04 12:11:37 +0900 |
commit | 35c3a24c8cbcccff1108079360e2063fc354b4bd (patch) | |
tree | b274f69203f0575cff52483e04ff43e81477b902 | |
parent | 68c2fc4cc0b3bbf865c381d1ff1281a3ac520cd6 (diff) |
Fixed error message when % at EOF
-rw-r--r-- | parse.y | 4 | ||||
-rw-r--r-- | test/ruby/test_parse.rb | 1 |
2 files changed, 4 insertions, 1 deletions
@@ -8659,7 +8659,8 @@ parse_percent(struct parser_params *p, const int space_seen, const enum lex_stat c = nextc(p); quotation: - if (c == -1 || !ISALNUM(c)) { + if (c == -1) goto unterminated; + if (!ISALNUM(c)) { term = c; if (!ISASCII(c)) goto unknown; c = 'Q'; @@ -8677,6 +8678,7 @@ parse_percent(struct parser_params *p, const int space_seen, const enum lex_stat } } if (term == -1) { + unterminated: compile_error(p, "unterminated quoted string meets end of file"); return 0; } diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb index 5f638afa01..4b7a12c8ef 100644 --- a/test/ruby/test_parse.rb +++ b/test/ruby/test_parse.rb @@ -601,6 +601,7 @@ class TestParse < Test::Unit::TestCase assert_syntax_error('%z()', /unknown type/) assert_syntax_error("%\u3042", /unknown type/) assert_syntax_error("%q\u3042", /unknown type/) + assert_syntax_error("%", /unterminated quoted string/) end def test_symbol |