From e70a308c75072121ec780ae571fc32db3fe87737 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 18 Apr 2010 03:48:54 +0000 Subject: * parse.y (parser_yylex): seems like a symbol-literal when spaces are unbalanced. [ruby-core:29578] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ bootstraptest/test_syntax.rb | 3 +++ parse.y | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4bf555b26a..dbd13656be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Apr 18 12:48:51 2010 Nobuyoshi Nakada + + * parse.y (parser_yylex): seems like a symbol-literal when spaces + are unbalanced. [ruby-core:29578] + Sun Apr 18 12:32:03 2010 Nobuyoshi Nakada * parse.y (string_content): preserve cond_stack and cmdarg_stack. diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb index 44db11babf..30219c048e 100644 --- a/bootstraptest/test_syntax.rb +++ b/bootstraptest/test_syntax.rb @@ -890,3 +890,6 @@ assert_valid_syntax('x y { "#{}".z { } }', bug1240) assert_valid_syntax('x y { "#{}".z do end }', bug1240) assert_valid_syntax('y "#{a 1}" do end', '[ruby-core:29579]') + +bug3163 = '[ruby-core:29578]' +assert_valid_syntax('foo = 1; foo :bar', bug3163) diff --git a/parse.y b/parse.y index fd788daacd..6a33f08e35 100644 --- a/parse.y +++ b/parse.y @@ -7192,7 +7192,8 @@ parser_yylex(struct parser_params *parser) lex_state = EXPR_DOT; return tCOLON2; } - if (lex_state == EXPR_END || lex_state == EXPR_ENDARG || (c != -1 && ISSPACE(c))) { + if ((!space_seen && (lex_state == EXPR_END || lex_state == EXPR_ENDARG)) || + (c != -1 && ISSPACE(c))) { pushback(c); lex_state = EXPR_BEG; return ':'; -- cgit v1.2.3