From 525336fcc97a0c0fc8dae2e6f9fe63dfc6e645ab Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 29 Oct 2003 17:47:24 +0000 Subject: * eval.c (proc_invoke): single array value to normal Proc#call (i.e. not via lambda call), should be treated just like yield. [ruby-dev:21726] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'parse.y') diff --git a/parse.y b/parse.y index 75fa33e820..5c43cd81da 100644 --- a/parse.y +++ b/parse.y @@ -5377,7 +5377,22 @@ static NODE * new_yield(node) NODE *node; { - return NEW_YIELD(node, node ? Qtrue : Qfalse); + long state = Qtrue; + + if (node) { + no_blockarg(node); + if (nd_type(node) == NODE_ARRAY && node->nd_next == 0) { + node = node->nd_head; + state = Qfalse; + } + if (node && nd_type(node) == NODE_SPLAT) { + state = Qtrue; + } + } + else { + state = Qfalse; + } + return NEW_YIELD(node, state); } static NODE* -- cgit v1.2.3