зеркало из https://github.com/github/ruby.git
Родитель
2e6e2fd9da
Коммит
397a509b6d
|
@ -211,6 +211,17 @@ assert_equal '[:a, :b, :c, :d, :e, :f, :g]', %q{
|
|||
Ractor.make_shareable(closure).call
|
||||
}
|
||||
|
||||
# Now autoload in non-main Ractor is not supported
|
||||
assert_equal 'ok', %q{
|
||||
autoload :Foo, 'foo.rb'
|
||||
r = Ractor.new do
|
||||
p Foo
|
||||
rescue Ractor::UnsafeError
|
||||
:ok
|
||||
end
|
||||
r.take
|
||||
}
|
||||
|
||||
###
|
||||
###
|
||||
# Ractor still has several memory corruption so skip huge number of tests
|
||||
|
|
|
@ -2553,6 +2553,10 @@ rb_autoload_load(VALUE mod, ID id)
|
|||
src = rb_sourcefile();
|
||||
if (src && loading && strcmp(src, loading) == 0) return Qfalse;
|
||||
|
||||
if (UNLIKELY(!rb_ractor_main_p())) {
|
||||
rb_raise(rb_eRactorUnsafeError, "require by autoload on non-main Ractor is not supported (%s)", rb_id2name(id));
|
||||
}
|
||||
|
||||
if ((ce = rb_const_lookup(mod, id))) {
|
||||
flag = ce->flag & (CONST_DEPRECATED | CONST_VISIBILITY_MASK);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче