From c501345218dc5fb0fae90d56a0c6fd19d38df5bb Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 19 Apr 2014 06:38:31 +0000 Subject: parse.y: allow parenthesed do-block in cmdarg * parse.y (primary): flush cmdarg flags inside left-paren in a command argument, to allow parenthesed do-block as an argument without arguments parentheses. [ruby-core:61950] [Bug #9726] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45637 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'parse.y') diff --git a/parse.y b/parse.y index 5b90bd2909..726f89130b 100644 --- a/parse.y +++ b/parse.y @@ -2620,12 +2620,18 @@ primary : literal $$ = dispatch1(paren, 0); %*/ } - | tLPAREN_ARG expr {lex_state = EXPR_ENDARG;} rparen + | tLPAREN_ARG { + $1 = cmdarg_stack; + cmdarg_stack = 0; + } + expr {lex_state = EXPR_ENDARG;} rparen + { + cmdarg_stack = $1; /*%%%*/ - $$ = $2; + $$ = $3; /*% - $$ = dispatch1(paren, $2); + $$ = dispatch1(paren, $3); %*/ } | tLPAREN compstmt ')' -- cgit v1.2.3