From c0a2d95cf318cf9b9ffe23f0a4b8720f69775448 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 22 Dec 2020 08:26:42 +0900 Subject: [PATCH] Update rb_ractor_ensure_shareable * Fixed use of rb_ractor_shareable_p * Raise Ractor::IsolationError --- ractor.c | 4 ++-- test/ruby/test_parse.rb | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ractor.c b/ractor.c index 484b5c78b9..585435c820 100644 --- a/ractor.c +++ b/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; } diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb index 8d12538fa3..aeaa42dadb 100644 --- a/test/ruby/test_parse.rb +++ b/test/ruby/test_parse.rb @@ -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