Fix Ractor.make_shareable
for recursive structures with unfreezable components
Followup to #3823
This commit is contained in:
parent
750e2d9e5e
commit
e25165b3fc
Notes:
git
2020-12-01 09:34:07 +09:00
@ -984,6 +984,17 @@ assert_equal '[false, false]', %q{
|
||||
[Ractor.shareable?(x), Ractor.shareable?(y)]
|
||||
}
|
||||
|
||||
# Ractor.make_shareable(recursive_objects)
|
||||
assert_equal '[:ok, false, false]', %q{
|
||||
o = Object.new
|
||||
def o.freeze; raise; end
|
||||
y = []
|
||||
x = [y, o].freeze
|
||||
y << x
|
||||
y.freeze
|
||||
[(Ractor.make_shareable(x) rescue :ok), Ractor.shareable?(x), Ractor.shareable?(y)]
|
||||
}
|
||||
|
||||
# define_method() can invoke different Ractor's proc if the proc is shareable.
|
||||
assert_equal '1', %q{
|
||||
class C
|
||||
|
Loading…
x
Reference in New Issue
Block a user