diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-08-08 23:24:29 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-08-08 23:24:29 +0000 |
commit | 09d57b8e0c3bb80d43798d7a2bfc239229126e9a (patch) | |
tree | d8b00e5170b80d83851bd7013a4a27123efb0da7 /eval.c | |
parent | 81579af43e3ad506e30a81bda710570d78dea021 (diff) | |
download | ruby-09d57b8e0c3bb80d43798d7a2bfc239229126e9a.tar.gz |
* parse.y (f_block_arg), eval.c (rb_yield_0): deal with dynamic
variable lambda arguments. [ruby-core:05540]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -4893,6 +4893,13 @@ rb_yield_0(val, self, klass, flags, avalue) } formal_assign(self, var, RARRAY(val)->len, RARRAY(val)->ptr, 0); } + else if (nd_type(var) == NODE_BLOCK) { + if (var->nd_next) { + bvar = var->nd_next->nd_head; + } + var = var->nd_head; + goto block_var; + } else { int len = 0; if (avalue) { @@ -5269,13 +5276,6 @@ assign(self, lhs, val, pcall) } break; - case NODE_BLOCK: - lhs = lhs->nd_head; - if (nd_type(lhs) == NODE_ARGS) { - formal_assign(self, lhs, 1, &val, 0); - break; - } - default: rb_bug("bug in variable assignment"); break; |