Merge pull request #2081 from nobu/parenthesed_do-block_in_cmdarg

Allow parenthesed do-block in cmdarg
This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-04-19 21:33:29 +09:00
2 changed files with 19 additions and 2 deletions
+8 -2
View File
@@ -2039,9 +2039,15 @@ primary : literal
p->cmdarg_stack = $<stack>1;
$$ = $3;
}
| tLPAREN_ARG expr {p->lstate = EXPR_ENDARG;} rparen
| tLPAREN_ARG
{
$$ = $2;
$<stack>1 = p->cmdarg_stack;
p->cmdarg_stack = 0;
}
expr {p->lstate = EXPR_ENDARG;} rparen
{
p->cmdarg_stack = $<stack>1;
$$ = $3;
}
| tLPAREN_ARG {p->lstate = EXPR_ENDARG;} rparen
{
+11
View File
@@ -254,3 +254,14 @@ assert('External command execution.') do
end
true
end
assert('parenthesed do-block in cmdarg') do
class ParenDoBlockCmdArg
def test(block)
block.call
end
end
x = ParenDoBlockCmdArg.new
result = x.test (proc do :ok; end)
assert_equal :ok, result
end