aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--parse.y1
-rw-r--r--test/ruby/test_syntax.rb20
2 files changed, 21 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index e84468d2a5..dd55279118 100644
--- a/parse.y
+++ b/parse.y
@@ -3455,6 +3455,7 @@ block_param_def : '|' opt_bv_decl '|'
}
| tOROP
{
+ p->cur_arg = 0;
p->max_numparam = ORDINAL_PARAM;
/*%%%*/
$$ = 0;
diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb
index 5fb4dfa64f..ba479fa459 100644
--- a/test/ruby/test_syntax.rb
+++ b/test/ruby/test_syntax.rb
@@ -243,6 +243,16 @@ class TestSyntax < Test::Unit::TestCase
o = Object.new
assert_warn("") do
+ o.instance_eval("def foo(var: bar {| | var}) var end")
+ end
+
+ o = Object.new
+ assert_warn("") do
+ o.instance_eval("def foo(var: bar {|| var}) var end")
+ end
+
+ o = Object.new
+ assert_warn("") do
o.instance_eval("def foo(var: def bar(var) var; end) var end")
end
@@ -298,6 +308,16 @@ class TestSyntax < Test::Unit::TestCase
o = Object.new
assert_warn("") do
+ o.instance_eval("def foo(var = bar {| | var}) var end")
+ end
+
+ o = Object.new
+ assert_warn("") do
+ o.instance_eval("def foo(var = bar {|| var}) var end")
+ end
+
+ o = Object.new
+ assert_warn("") do
o.instance_eval("def foo(var = def bar(var) var; end) var end")
end