summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-04-09 09:30:25 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-04-09 09:30:25 +0000
commite32da15f48189cfba02a9be2e6572161d91b3122 (patch)
tree47c660015f96f23220975c71fd69e71f8a69b6ef /parse.y
parent8673eacafa039f056927e0f91ce195afae9b9019 (diff)
1.1b9_09 pre
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y14
1 files changed, 10 insertions, 4 deletions
diff --git a/parse.y b/parse.y
index 37334900eb..e511257b61 100644
--- a/parse.y
+++ b/parse.y
@@ -570,10 +570,16 @@ arg : variable '=' arg
| variable OP_ASGN arg
{
value_expr($3);
- if (is_local_id($1)&&!local_id($1)&&dyna_in_block())
- dyna_var_asgn($1, TRUE);
- $$ = assignable($1, call_op(gettable($1), $2, 1, $3));
- fixpos($$, $3);
+ if (is_local_id($1)) {
+ if (local_id($1)||!dyna_in_block()) {
+ local_cnt($1);
+ }
+ else if (!dyna_var_defined($1)) {
+ dyna_var_asgn($1, TRUE);
+ }
+ }
+ $$ = assignable($1,call_op(gettable($1),$2,1,$3));
+ fixpos($$, $3);
}
| primary '[' aref_args ']' OP_ASGN arg
{