summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y3
-rw-r--r--test/ruby/test_syntax.rb1
2 files changed, 3 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index a31139fbef..58f0e4b615 100644
--- a/parse.y
+++ b/parse.y
@@ -8678,10 +8678,11 @@ parser_yylex(struct parser_params *p)
case '\13': /* '\v' */
space_seen = 1;
break;
+ case '|':
case '&':
case '.': {
dispatch_delayed_token(p, tIGNORED_NL);
- if (peek(p, '.') == (c == '&')) {
+ if (c == '|' ? peek(p, '>') : (peek(p, '.') == (c == '&'))) {
pushback(p, c);
dispatch_scan_event(p, tSP);
goto retry;
diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb
index b3e2183830..d2638c79b4 100644
--- a/test/ruby/test_syntax.rb
+++ b/test/ruby/test_syntax.rb
@@ -1384,6 +1384,7 @@ eom
x = nil
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"))
end
private