From fe310fd7bbaceada062ec1c5c72f95f13dfc4c08 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 2 Jun 2005 07:26:10 +0000 Subject: * parse.y (method_call): new experiment: "(expr)(args...)" to invoke "expr.call(args...)". [EXPERIMENTAL] * parse.y (command): revert implicit "call" for local variables. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@8548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'parse.y') diff --git a/parse.y b/parse.y index 5d2e6690d..99cab85b7 100644 --- a/parse.y +++ b/parse.y @@ -3316,6 +3316,18 @@ method_call : operation paren_args $$ = dispatch0(zsuper); %*/ } + | tLPAREN compstmt ')' paren_args + { + /*%%%*/ + if (!$2) $2 = NEW_NIL(); + $$ = new_call($2, rb_intern("call"), $4); + fixpos($$, $2); + /*% + $$ = dispatch3(call, dispatch1(paren, $2), + ripper_id2sym('.'), rb_intern("call")); + $$ = method_optarg($$, $4); + %*/ + } ; brace_block : '{' @@ -7869,10 +7881,10 @@ new_fcall_gen(parser, m, a) NODE *a; { if (a && nd_type(a) == NODE_BLOCK_PASS) { - a->nd_iter = fcall_gen(parser,m,a->nd_head); + a->nd_iter = NEW_FCALL(m,a->nd_head); return a; } - return fcall_gen(parser, m,a); + return NEW_FCALL(m, a); } static NODE* -- cgit