summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-06-23 08:00:08 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-06-23 08:00:08 +0000
commitcfdeb2ef10d20347040af4ce42d858d7a25f7a83 (patch)
tree20639befe534e95c15faf55711f4ece9389c960d /parse.y
parent5222cc1eac378cf3a0799cb615c646a21eedaf21 (diff)
merge revision(s) 45637: [Backport #9726]
* 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/branches/ruby_2_0_0@46509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y12
1 files changed, 9 insertions, 3 deletions
diff --git a/parse.y b/parse.y
index c7ac527210..3cbf8feb24 100644
--- a/parse.y
+++ b/parse.y
@@ -2621,12 +2621,18 @@ primary : literal
$$ = dispatch1(paren, 0);
%*/
}
- | tLPAREN_ARG expr {lex_state = EXPR_ENDARG;} rparen
+ | tLPAREN_ARG
{
+ $<val>1 = cmdarg_stack;
+ cmdarg_stack = 0;
+ }
+ expr {lex_state = EXPR_ENDARG;} rparen
+ {
+ cmdarg_stack = $<val>1;
/*%%%*/
- $$ = $2;
+ $$ = $3;
/*%
- $$ = dispatch1(paren, $2);
+ $$ = dispatch1(paren, $3);
%*/
}
| tLPAREN compstmt ')'