diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_rubyoptions.rb | 12 |
3 files changed, 17 insertions, 1 deletions
@@ -1,3 +1,7 @@ +Wed Dec 8 21:36:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * parse.y (shadowing_lvar_gen): fix line number. [ruby-dev:42718] + Wed Dec 8 20:37:11 2010 Tanaka Akira <akr@fsij.org> * dir.c: parenthesize macro arguments. @@ -8269,7 +8269,7 @@ shadowing_lvar_gen(struct parser_params *parser, ID name) rb_warningS("shadowing outer local variable - %s", rb_id2name(name)); vtable_add(lvtbl->vars, name); if (lvtbl->used) { - vtable_add(lvtbl->used, name); + vtable_add(lvtbl->used, (ID)ruby_sourceline); } } } diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb index 9fad50ae4c..be3307e56a 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -454,6 +454,18 @@ class TestRubyOptions < Test::Unit::TestCase assert_in_out_err(["-we", "def foo\n eval('a=1')\nend"], "", [], [], feature3446) assert_in_out_err(["-we", "1.times do\n a=1\nend"], "", [], [], feature3446) assert_in_out_err(["-we", "def foo\n 1.times do\n a=1\n end\nend"], "", [], ["-e:3: warning: assigned but unused variable - a"], feature3446) + assert_in_out_err(["-we", "def foo\n"" 1.times do |a| end\n""end"], "", [], []) + end + + def test_shadowing_variable + bug4130 = '[ruby-dev:42718]' + assert_in_out_err(["-we", "def foo\n"" a=1\n"" 1.times do |a| end\n"" a\n""end"], + "", [], ["-e:3: warning: shadowing outer local variable - a"], bug4130) + assert_in_out_err(["-we", "def foo\n"" a=1\n"" 1.times do |a| end\n""end"], + "", [], + ["-e:3: warning: shadowing outer local variable - a", + "-e:2: warning: assigned but unused variable - a", + ], bug4130) end def test_script_from_stdin |