From 80dbf0e030e7ecc67579ced74202fd0808628189 Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 27 Aug 2003 19:43:50 +0000 Subject: * eval.c (rb_eval): *a = [1,2] now assigns [[1,2]] to a. consistent with *a = [1], which set [[1]] to a. * node.h: merge NODE_RESTARY to NODE_SPLAT. * parse.y: rules simplified a bit by removing NODE_RESTARY. * sample/test.rb: updated for new assignment behavior. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 38edb3485..5ee4158b2 100644 --- a/eval.c +++ b/eval.c @@ -2348,7 +2348,7 @@ svalue_to_mrhs(v, lhs) return rb_ary_new3(1, v); } /* no lhs means splat lhs only */ - if (!lhs && RARRAY(tmp)->len <= 1) { + if (!lhs) { return rb_ary_new3(1, v); } return tmp; @@ -2399,8 +2399,8 @@ static VALUE splat_value(v) VALUE v; { - if (NIL_P(v)) return rb_ary_new3(1, Qnil); - return rb_Array(v); + if (NIL_P(v)) return rb_ary_new3(1, Qnil); + return rb_Array(v); } static VALUE @@ -2784,17 +2784,12 @@ rb_eval(self, n) JUMP_TAG(TAG_RETRY); break; - case NODE_RESTARY: - case NODE_RESTARY2: - result = splat_value(rb_eval(self, node->nd_head)); - break; - case NODE_SPLAT: - result = avalue_splat(splat_value(rb_eval(self, node->nd_head))); + result = splat_value(rb_eval(self, node->nd_head)); break; case NODE_SVALUE: - result = rb_eval(self, node->nd_head); + result = avalue_splat(rb_eval(self, node->nd_head)); if (result == Qundef) result = Qnil; break; @@ -3157,8 +3152,7 @@ rb_eval(self, n) break; case NODE_MASGN: - result = svalue_to_mrhs(rb_eval(self, node->nd_value), node->nd_head); - result = massign(self, node, result, 0); + result = massign(self, node, rb_eval(self, node->nd_value), 0); break; case NODE_LASGN: -- cgit