summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-08 12:36:20 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-08 12:36:20 +0000
commit2f26014e38ba5a407c71d1b548158224459e6548 (patch)
tree78c1e4bb3c68d8008143e6e9ccaee00583ebc181
parentfad7d95a18e57bbf8ea33f144f4de94da1388738 (diff)
* parse.y (shadowing_lvar_gen): fix line number. [ruby-dev:42718]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--parse.y2
-rw-r--r--test/ruby/test_rubyoptions.rb12
3 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 379fd9ab6c..9d2f2e60b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/parse.y b/parse.y
index deda492204..10f4a80328 100644
--- a/parse.y
+++ b/parse.y
@@ -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