зеркало из https://github.com/github/ruby.git
Update rb_ractor_ensure_shareable
* Fixed use of rb_ractor_shareable_p * Raise Ractor::IsolationError
This commit is contained in:
Родитель
b2aa21b868
Коммит
c0a2d95cf3
4
ractor.c
4
ractor.c
|
@ -2445,10 +2445,10 @@ rb_ractor_make_shareable_copy(VALUE obj)
|
|||
VALUE
|
||||
rb_ractor_ensure_shareable(VALUE obj, VALUE name)
|
||||
{
|
||||
if (!RTEST(rb_ractor_shareable_p(obj))) {
|
||||
if (!rb_ractor_shareable_p(obj)) {
|
||||
VALUE message = rb_sprintf("cannot assign unshareable object to %"PRIsVALUE,
|
||||
name);
|
||||
rb_exc_raise(rb_exc_new_str(rb_eRactorError, message));
|
||||
rb_exc_raise(rb_exc_new_str(rb_eRactorIsolationError, message));
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
|
|
@ -1178,8 +1178,8 @@ x = __ENCODING__
|
|||
Class.new.class_eval(code)
|
||||
end
|
||||
|
||||
def assert_ractor_error(message, code)
|
||||
assert_raise_with_message(Ractor::Error, message) do
|
||||
def assert_raise_separately(error, message, code)
|
||||
assert_raise_with_message(error, message) do
|
||||
eval_separately(code)
|
||||
end
|
||||
end
|
||||
|
@ -1243,7 +1243,8 @@ x = __ENCODING__
|
|||
end
|
||||
|
||||
def test_shareable_constant_value_unshareable_literal
|
||||
assert_ractor_error(/unshareable/, "#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
assert_raise_separately(Ractor::IsolationError, /unshareable/,
|
||||
"#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
begin;
|
||||
# shareable_constant_value: literal
|
||||
C = ["Not " + "shareable"]
|
||||
|
@ -1264,7 +1265,8 @@ x = __ENCODING__
|
|||
end
|
||||
|
||||
def test_shareable_constant_value_unfrozen
|
||||
assert_ractor_error(/does not freeze object correctly/, "#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
assert_raise_separately(Ractor::Error, /does not freeze object correctly/,
|
||||
"#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
begin;
|
||||
# shareable_constant_value: experimental_everything
|
||||
o = Object.new
|
||||
|
|
Загрузка…
Ссылка в новой задаче