diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-12-22 08:26:42 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-12-23 13:50:42 +0900 |
commit | c0a2d95cf318cf9b9ffe23f0a4b8720f69775448 (patch) | |
tree | f46cfc8edc2a68f735523cdaf0540ee9ddafcb74 | |
parent | b2aa21b868419c2d87e2812b6b3584a8a1479c23 (diff) | |
download | ruby-c0a2d95cf318cf9b9ffe23f0a4b8720f69775448.tar.gz |
Update rb_ractor_ensure_shareable
* Fixed use of rb_ractor_shareable_p
* Raise Ractor::IsolationError
-rw-r--r-- | ractor.c | 4 | ||||
-rw-r--r-- | test/ruby/test_parse.rb | 10 |
2 files changed, 8 insertions, 6 deletions
@@ -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 |