diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 6 |
3 files changed, 12 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Sun Nov 1 09:12:10 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * 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 <hsbt@ruby-lang.org> * test/openssl/test_pair.rb: skipped tests if openssl doesn't support @@ -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 a047454513..552cf5cd00 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -612,6 +612,12 @@ eom 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 |