diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-10-30 02:37:59 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-10-30 02:37:59 +0000 |
commit | 8ed50fdefa8b38a2371717308a3381e4ebaca8d1 (patch) | |
tree | b9b68f7125279c4c76d895ee8b86f9bdde197f60 /test/ruby/test_object.rb | |
parent | afc5764181e5fb8ec52ae3e1f6e9d43b3e9ba87f (diff) | |
download | ruby-8ed50fdefa8b38a2371717308a3381e4ebaca8d1.tar.gz |
variable.c (generic_ivar_remove): return original value
This fixes a bug introduced in r50678
("variable.c: use indices for generic ivars")
and does not affect any released version of Ruby
* variable.c (generic_ivar_remove): adjust type, set valp
(rb_obj_remove_instance_variable): simplify call
* test/ruby/test_object.rb (test_remove_instance_variable):
expand for implementation details
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52378 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_object.rb')
-rw-r--r-- | test/ruby/test_object.rb | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb index 5ba44c8699..b0e561a206 100644 --- a/test/ruby/test_object.rb +++ b/test/ruby/test_object.rb @@ -232,10 +232,22 @@ class TestObject < Test::Unit::TestCase end def test_remove_instance_variable - o = Object.new - o.instance_eval { @foo = :foo } - o.remove_instance_variable(:@foo) - assert_equal(false, o.instance_variable_defined?(:@foo)) + { 'T_OBJECT' => Object.new, + 'T_CLASS,T_MODULE' => Class.new(Object), + 'generic ivar' => '', + }.each do |desc, o| + assert_raises(NameError, "#{desc} iv removal raises before set") do + o.remove_instance_variable(:@foo) + end + o.instance_eval { @foo = :foo } + assert_equal(:foo, o.remove_instance_variable(:@foo), + "#{desc} iv removal returns original value") + assert_equal(false, o.instance_variable_defined?(:@foo), + "#{desc} iv removed succesfully") + assert_raises(NameError, "#{desc} iv removal raises after removal") do + o.remove_instance_variable(:@foo) + end + end end def test_convert_string |