Fix self value in a block is changed with return value for Fixnum, nil, instance variable.

Fix #1504
This commit is contained in:
Keita Obo
2013-09-18 00:57:23 +09:00
parent 0bce3a36d2
commit c4e5a8b167
2 changed files with 27 additions and 8 deletions
+23 -2
View File
@@ -60,13 +60,34 @@ assert('Proc#return_does_not_break_self') do
attr_accessor :block
def initialize
end
def register_block
def return_array
@block = Proc.new { self }
return []
end
def return_instance_variable
@block = Proc.new { self }
return @block
end
def return_const_fixnum
@block = Proc.new { self }
return 123
end
def return_nil
@block = Proc.new { self }
return nil
end
end
c = TestClass.new
assert_equal [], c.register_block
assert_equal [], c.return_array
assert_equal c, c.block.call
c.return_instance_variable
assert_equal c, c.block.call
assert_equal 123, c.return_const_fixnum
assert_equal c, c.block.call
assert_equal nil, c.return_nil
assert_equal c, c.block.call
end