summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-05-12 14:42:17 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-05-12 14:42:17 +0000
commit18e46b81fffb7c675515b151deed0f8b2a3a2c64 (patch)
tree3e42e54ffbf8df5338ccb1ddb90c8ef4fc3372e4
parent9c504ea8111fb44b46e3011c0417045720334f43 (diff)
* vm.c (collect_local_variables_in_env): remove unnecessary check
which causes: x=1;proc{local_variables}.call #=> [] * test/ruby/test_variable.rb: add a test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--test/ruby/test_variable.rb7
-rw-r--r--vm.c3
3 files changed, 14 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 076aabf..6650bf2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Mon May 12 23:37:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (collect_local_variables_in_env): remove unnecessary check
+ which causes: x=1;proc{local_variables}.call #=> []
+
+ * test/ruby/test_variable.rb: add a test for above.
+
Mon May 12 23:05:24 2008 NAKAMURA Usaku <usa@ruby-lang.org>
* process.c, include/ruby/intern.h (rb_run_exec_options): externed.
diff --git a/test/ruby/test_variable.rb b/test/ruby/test_variable.rb
index 349cb05..601fc21 100644
--- a/test/ruby/test_variable.rb
+++ b/test/ruby/test_variable.rb
@@ -59,4 +59,11 @@ class TestVariable < Test::Unit::TestCase
lvar = 1
assert_instance_of(Symbol, local_variables[0], "[ruby-dev:34008]")
end
+
+ def test_local_variables2
+ x = 1
+ proc do |y|
+ assert_equal([:x, :y], local_variables.sort)
+ end.call
+ end
end
diff --git a/vm.c b/vm.c
index 58eabf3..ca73e4c 100644
--- a/vm.c
+++ b/vm.c
@@ -280,9 +280,6 @@ static int
collect_local_variables_in_env(rb_env_t *env, VALUE ary)
{
int i;
- if (env->block.lfp == env->block.dfp) {
- return 0;
- }
for (i = 0; i < env->block.iseq->local_table_size; i++) {
ID lid = env->block.iseq->local_table[i];
if (lid) {