aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-06-14 18:09:45 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-06-14 18:17:50 +0900
commitd365fd5a024254d7c105a62a015a7ea29ccf3e5d (patch)
tree4019cf0a16552f1cee1d3e0268aa3b1b84471a39
parentd780c3662484d6072b3a6945b840049de72c2096 (diff)
downloadruby-d365fd5a024254d7c105a62a015a7ea29ccf3e5d.tar.gz
An operator is not allowed just after `|>`
https://twitter.com/yukihiro_matz/status/1139454774640726019
-rw-r--r--parse.y8
-rw-r--r--test/ruby/test_syntax.rb1
2 files changed, 5 insertions, 4 deletions
diff --git a/parse.y b/parse.y
index 58f0e4b615..ff0afed99e 100644
--- a/parse.y
+++ b/parse.y
@@ -1499,28 +1499,28 @@ expr : command_call
| pipeline
;
-pipeline : expr tPIPE operation2 opt_paren_args
+pipeline : expr tPIPE operation opt_paren_args
{
/*%%%*/
$$ = new_command_qcall(p, ID2VAL(idPIPE), $1, $3, $4, Qnull, &@3, &@$);
/*% %*/
/*% ripper: command_call!($1, ID2VAL(idPIPE), $3, $4) %*/
}
- | expr tPIPE operation2 opt_paren_args brace_block
+ | expr tPIPE operation opt_paren_args brace_block
{
/*%%%*/
$$ = new_command_qcall(p, ID2VAL(idPIPE), $1, $3, $4, $5, &@3, &@$);
/*% %*/
/*% ripper: method_add_block!(command_call!($1, ID2VAL(idPIPE), $3, $4), $5) %*/
}
- | expr tPIPE operation2 command_args
+ | expr tPIPE operation command_args
{
/*%%%*/
$$ = new_command_qcall(p, ID2VAL(idPIPE), $1, $3, $4, Qnull, &@3, &@$);
/*% %*/
/*% ripper: command_call!($1, ID2VAL(idPIPE), $3, $4) %*/
}
- | expr tPIPE operation2 command_args do_block
+ | expr tPIPE operation command_args do_block
{
/*%%%*/
$$ = new_command_qcall(p, ID2VAL(idPIPE), $1, $3, $4, $5, &@3, &@$);
diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb
index d2638c79b4..4e8ffe56fb 100644
--- a/test/ruby/test_syntax.rb
+++ b/test/ruby/test_syntax.rb
@@ -1385,6 +1385,7 @@ eom
assert_equal("121", eval('x = 12 |> pow(2) |> to_s 11'))
assert_equal(12, x)
assert_equal([2, 4, 6], eval("1.. |> take 3\n|> map do @1 * 2 end"))
+ assert_syntax_error('a|>-b', /unexpected '-'/)
end
private