diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-06-07 08:29:59 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-06-07 08:29:59 +0000 |
commit | 4c6b76c1e42ebc63bf3452ba3c76b2c1fca73c27 (patch) | |
tree | 7e18f15ca801b542314a3ad5f8b1f36d7bedfba3 /parse.y | |
parent | 85d105cf8c7c664d34bf86b8d72c728cb5b6e7ab (diff) |
* parse.y (yylex): exclude kDO_BLOCK too much by false condition.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -426,6 +426,9 @@ stmt : kALIAS fitem {lex_state = EXPR_FNAME;} fitem } | lhs '=' mrhs_basic { + if (nd_type($3) == NODE_RESTARGS) { + nd_set_type($3, NODE_REXPAND); + } $$ = node_assign($1, $3); } | mlhs '=' mrhs @@ -1147,7 +1150,7 @@ mrhs_basic : args ',' arg | tSTAR arg { value_expr($2); - $$ = NEW_REXPAND($2); + $$ = NEW_RESTARGS($2); } primary : literal @@ -1212,8 +1215,9 @@ primary : literal } | tLBRACK aref_args ']' { - if ($2 == 0) + if ($2 == 0) { $$ = NEW_ZARRAY(); /* zero length array*/ + } else { $$ = $2; } @@ -3719,8 +3723,7 @@ yylex() } if (kw->id[0] == kDO) { if (COND_P()) return kDO_COND; - if (CMDARG_P() && state != EXPR_CMDARG && state != EXPR_ARG) - return kDO_BLOCK; + if (CMDARG_P()) return kDO_BLOCK; return kDO; } if (state == EXPR_BEG) |