зеркало из https://github.com/github/ruby.git
parse.y: reset current_arg after block var
* parse.y (block_param_def): reset current_arg after block parameter definition, not to warn references in that block body. [ruby-core:65990] [Bug #10314] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
6fe9b2b794
Коммит
049bbd72e3
2
parse.y
2
parse.y
|
@ -3409,6 +3409,7 @@ opt_block_param : none
|
|||
|
||||
block_param_def : '|' opt_bv_decl '|'
|
||||
{
|
||||
current_arg = 0;
|
||||
/*%%%*/
|
||||
$$ = 0;
|
||||
/*%
|
||||
|
@ -3427,6 +3428,7 @@ block_param_def : '|' opt_bv_decl '|'
|
|||
}
|
||||
| '|' block_param opt_bv_decl '|'
|
||||
{
|
||||
current_arg = 0;
|
||||
/*%%%*/
|
||||
$$ = $2;
|
||||
/*%
|
||||
|
|
|
@ -171,6 +171,11 @@ class TestSyntax < Test::Unit::TestCase
|
|||
assert_warn("") do
|
||||
o.instance_eval("def foo(var: def bar(var) var; end) var end")
|
||||
end
|
||||
|
||||
o = Object.new
|
||||
assert_warn("") do
|
||||
o.instance_eval("proc {|var: 1| var}")
|
||||
end
|
||||
end
|
||||
|
||||
def test_optional_self_reference
|
||||
|
@ -207,6 +212,11 @@ class TestSyntax < Test::Unit::TestCase
|
|||
assert_warn("") do
|
||||
o.instance_eval("def foo(var = def bar(var) var; end) var end")
|
||||
end
|
||||
|
||||
o = Object.new
|
||||
assert_warn("") do
|
||||
o.instance_eval("proc {|var = 1| var}")
|
||||
end
|
||||
end
|
||||
|
||||
def test_warn_grouped_expression
|
||||
|
|
Загрузка…
Ссылка в новой задаче