From 09d57b8e0c3bb80d43798d7a2bfc239229126e9a Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 8 Aug 2005 23:24:29 +0000 Subject: * 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 --- eval.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 01dde5fe5f..4354765cb5 100644 --- a/eval.c +++ b/eval.c @@ -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; -- cgit v1.2.3