mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Fix self value in a block is changed with return value for Fixnum, nil, instance variable.
Fix #1504
This commit is contained in:
+23
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user