From 7484d07ca765770619b32a744fde15ae240a3517 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 1 Nov 2015 00:12:12 +0000 Subject: [PATCH] parse.y: invalid symbol * parse.y (parser_yylex): ':' separated by a comment and a newline is not valid as symbol. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ parse.y | 2 +- test/ruby/test_syntax.rb | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ba4cd1af187b69..b58aebdafad05e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Nov 1 09:12:10 2015 Nobuyoshi Nakada + + * parse.y (parser_yylex): ':' separated by a comment and a newline + is not valid as symbol. + Sat Oct 31 20:15:48 2015 SHIBATA Hiroshi * test/openssl/test_pair.rb: skipped tests if openssl doesn't support diff --git a/parse.y b/parse.y index 4f3d9554b46a46..bbfcad7bb9035c 100644 --- a/parse.y +++ b/parse.y @@ -8426,7 +8426,7 @@ parser_yylex(struct parser_params *parser) lex_state = EXPR_DOT; return tCOLON2; } - if (IS_END() || ISSPACE(c)) { + if (IS_END() || ISSPACE(c) || c == '#') { pushback(c); warn_balanced(":", "symbol literal"); lex_state = EXPR_BEG; diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index a0474545135329..552cf5cd00b73e 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -612,6 +612,12 @@ def test_too_big_nth_ref end end + def test_invalid_symbol_space + assert_syntax_error(": foo", /unexpected ':'/) + assert_syntax_error(": #\n foo", /unexpected ':'/) + assert_syntax_error(":#\n foo", /unexpected ':'/) + end + private def not_label(x) @result = x; @not_label ||= nil end