summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/eval.c b/eval.c
index 01dde5fe5..4354765cb 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;