diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-11-07 07:45:57 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-11-07 07:45:57 +0000 |
commit | b92a1f82e110c596256e76b3bb625438089e3e5c (patch) | |
tree | 726f7ea8b36eb91919f1306cb5c2889de57b5bfb | |
parent | 6c0ca6f5e702ef13ccde5cd3c7abce64168279a5 (diff) | |
download | ruby-b92a1f82e110c596256e76b3bb625438089e3e5c.tar.gz ruby-b92a1f82e110c596256e76b3bb625438089e3e5c.tar.xz ruby-b92a1f82e110c596256e76b3bb625438089e3e5c.zip |
* eval.c (when_check): need to splat for NODE_ARGSCAT as well.
[ruby-dev:29860]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | eval.c | 7 |
2 files changed, 10 insertions, 2 deletions
@@ -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> * string.c (Init_String): remove duplicated definition of @@ -2723,7 +2723,9 @@ when_check(NODE *tag, VALUE val, VALUE self) } break; 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++) { if (when_cond(val, RARRAY_PTR(elm)[i])) { return Qtrue; @@ -2732,7 +2734,8 @@ when_check(NODE *tag, VALUE val, VALUE self) break; case NODE_ARGSCAT: 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: if (when_check(tag->nd_head, val, self)) return Qtrue; if (when_cond(val, rb_eval(self, tag->nd_body))) return Qtrue; |