summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-26 01:31:20 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-26 01:31:20 +0000
commit691df99d6acd07d1791b68b6b7208ec553dab33f (patch)
tree4c840cc47e808409c7d300922ab1a3372bb242f6
parente42d6b886245deba61e179bc0f9fa589c26737c3 (diff)
* test/ruby/test_eval.rb (TestEval::test_instance_eval_cvar):
updated not to modify class variable of Object class. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--insns.def3
-rw-r--r--test/ruby/test_eval.rb20
3 files changed, 11 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index 67c4fff764..61691ba939 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,11 @@ Sun Nov 25 12:12:03 2007 Eric Hodel <drbrain@segment7.net>
* lib/rubygems*: Import RubyGems r1516.
+Sat Nov 24 23:25:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_eval.rb (TestEval::test_instance_eval_cvar):
+ updated not to modify class variable of Object class.
+
Fri Nov 23 17:34:24 2007 Koichi Sasada <ko1@atdot.net>
* io.c: add rb_read_internal() as blocking function.
diff --git a/insns.def b/insns.def
index 6f19c12bcc..f5751ee721 100644
--- a/insns.def
+++ b/insns.def
@@ -184,8 +184,7 @@ getclassvariable
()
(VALUE val)
{
- VALUE klass = vm_get_cvar_base(th, GET_ISEQ());
- val = rb_cvar_get(klass, id);
+ val = rb_cvar_get(vm_get_cvar_base(th, GET_ISEQ()), id);
}
/**
diff --git a/test/ruby/test_eval.rb b/test/ruby/test_eval.rb
index 7e6313b133..9d0fdaa648 100644
--- a/test/ruby/test_eval.rb
+++ b/test/ruby/test_eval.rb
@@ -118,12 +118,9 @@ class TestEval < Test::Unit::TestCase
end
def forall_TYPE(mid)
- objects = [Object.new, [], nil, true, false, 77, ] #:sym] # TODO: check
+ objects = [Object.new, [], nil, true, false, 77, :sym] # TODO: check
objects.each do |obj|
obj.instance_variable_set :@ivar, 12
- obj.class.class_variable_set :@@cvar, 13
- # Use same value with env. See also test_instance_variable_cvar.
- obj.class.const_set :Const, 15 unless obj.class.const_defined?(:Const)
send mid, obj
end
end
@@ -142,11 +139,7 @@ class TestEval < Test::Unit::TestCase
assert_equal 11, o.instance_eval("11")
assert_equal 12, o.instance_eval("@ivar")
- begin
- assert_equal 13, o.instance_eval("@@cvar")
- rescue => err
- assert false, "cannot get cvar from #{o.class}"
- end
+ assert_equal 13, o.instance_eval("@@cvar")
assert_equal 14, o.instance_eval("$gvar__eval")
assert_equal 15, o.instance_eval("Const")
assert_equal 16, o.instance_eval("7 + 9")
@@ -194,16 +187,13 @@ class TestEval < Test::Unit::TestCase
def test_instance_eval_cvar
env = @@cvar
- cls = "class"
- [Object.new, [], 7, ].each do |obj| # TODO: check :sym
- obj.class.class_variable_set :@@cvar, cls
+ [Object.new, [], 7, :sym].each do |obj| # TODO: check :sym
assert_equal env, obj.instance_eval("@@cvar")
assert_equal env, obj.instance_eval { @@cvar }
end
[true, false, nil].each do |obj|
- obj.class.class_variable_set :@@cvar, cls
- assert_equal cls, obj.instance_eval("@@cvar")
- assert_equal cls, obj.instance_eval { @@cvar }
+ assert_equal env, obj.instance_eval("@@cvar")
+ assert_equal env, obj.instance_eval { @@cvar }
end
end