* eval.c (when_check): need to splat for NODE_ARGSCAT as well.
[ruby-dev:29860] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0ee03fefad
commit
f54e979d36
@ -1,3 +1,8 @@
|
|||||||
|
Tue Nov 7 16:41:21 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* eval.c (when_check): need to splat for NODE_ARGSCAT as well.
|
||||||
|
[ruby-dev:29860]
|
||||||
|
|
||||||
Mon Nov 6 22:23:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Mon Nov 6 22:23:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* string.c (Init_String): remove duplicated definition of
|
* string.c (Init_String): remove duplicated definition of
|
||||||
|
7
eval.c
7
eval.c
@ -2723,7 +2723,9 @@ when_check(NODE *tag, VALUE val, VALUE self)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NODE_SPLAT:
|
case NODE_SPLAT:
|
||||||
elm = splat_value(rb_eval(self, tag->nd_head));
|
tag = tag->nd_head;
|
||||||
|
splat:
|
||||||
|
elm = splat_value(rb_eval(self, tag));
|
||||||
for (i=0; i<RARRAY_LEN(elm); i++) {
|
for (i=0; i<RARRAY_LEN(elm); i++) {
|
||||||
if (when_cond(val, RARRAY_PTR(elm)[i])) {
|
if (when_cond(val, RARRAY_PTR(elm)[i])) {
|
||||||
return Qtrue;
|
return Qtrue;
|
||||||
@ -2732,7 +2734,8 @@ when_check(NODE *tag, VALUE val, VALUE self)
|
|||||||
break;
|
break;
|
||||||
case NODE_ARGSCAT:
|
case NODE_ARGSCAT:
|
||||||
if (when_check(tag->nd_head, val, self)) return Qtrue;
|
if (when_check(tag->nd_head, val, self)) return Qtrue;
|
||||||
return when_check(tag->nd_body, val, self);
|
tag = tag->nd_body;
|
||||||
|
goto splat;
|
||||||
case NODE_ARGSPUSH:
|
case NODE_ARGSPUSH:
|
||||||
if (when_check(tag->nd_head, val, self)) return Qtrue;
|
if (when_check(tag->nd_head, val, self)) return Qtrue;
|
||||||
if (when_cond(val, rb_eval(self, tag->nd_body))) return Qtrue;
|
if (when_cond(val, rb_eval(self, tag->nd_body))) return Qtrue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user