diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-02-21 22:25:28 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-02-21 22:25:28 +0000 |
commit | 79617fc9e26a64ee6d97cf7f7d6b9764116dd966 (patch) | |
tree | 06aa4379213459c0314ae436ed352bc42b0ddcc3 /parse.y | |
parent | 2d62d7933a0ae57816c68aa9252413b432c2abb9 (diff) | |
download | ruby-79617fc9e26a64ee6d97cf7f7d6b9764116dd966.tar.gz ruby-79617fc9e26a64ee6d97cf7f7d6b9764116dd966.tar.xz ruby-79617fc9e26a64ee6d97cf7f7d6b9764116dd966.zip |
* parse.y (parser_yylex): identfier after dot must not be a variable.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@8008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -2619,7 +2619,7 @@ primary : literal $$ = dispatch2(while, $3, $6); %*/ } - | kUNTIL {COND_PUSH(1);} expr_value do {COND_POP();} + | kUNTIL {COND_PUSH(1);} expr_value do {COND_POP();} compstmt kEND { @@ -4446,7 +4446,7 @@ lex_io_gets(parser, io) struct parser_params *parser; VALUE io; { - return rb_io_gets(io); + return rb_io_gets(io); } NODE* @@ -5037,7 +5037,7 @@ parser_heredoc_identifier(parser) uc = (unsigned int)c; len = mbclen(uc); do {tokadd(c);} while (--len > 0 && (c = nextc()) != -1); - } while ((c = nextc()) != -1 && + } while ((c = nextc()) != -1 && (uc = (unsigned char)c, is_identchar(uc))); pushback(c); break; @@ -5430,7 +5430,7 @@ parser_yylex(parser) if (c == '<' && lex_state != EXPR_END && lex_state != EXPR_DOT && - lex_state != EXPR_ENDARG && + lex_state != EXPR_ENDARG && lex_state != EXPR_CLASS && (!IS_ARG() || space_seen)) { int token = heredoc_identifier(); @@ -6326,6 +6326,7 @@ parser_yylex(parser) { int result = 0; + enum lex_state_e last_state = lex_state; switch (tok()[0]) { case '$': @@ -6421,7 +6422,7 @@ parser_yylex(parser) ID ident = rb_intern(tok()); set_yylval_id(ident); - if (is_local_id(ident) && lvar_defined(ident)) { + if (last_state != EXPR_DOT && is_local_id(ident) && lvar_defined(ident)) { lex_state = EXPR_END; } } |