зеркало из https://github.com/github/ruby.git
Include the first constant name into `Ractor::IsolationError` message
If lhs of assignment is top-level constant reference, the first constant name is omitted from error message. This commit fixes it. ``` # shareable_constant_value: literal ::C = ["Not " + "shareable"] # Before # => cannot assign unshareable object to (Ractor::IsolationError) # After # => cannot assign unshareable object to ::C (Ractor::IsolationError) ```
This commit is contained in:
Родитель
e7b0a01002
Коммит
bf72cb84ca
|
@ -1060,6 +1060,7 @@ rb_node_const_decl_val(const NODE *node)
|
|||
}
|
||||
else if (n && nd_type_p(n, NODE_COLON3)) {
|
||||
// ::Const::Name
|
||||
rb_ary_push(path, rb_id2str(RNODE_COLON3(n)->nd_mid));
|
||||
rb_ary_push(path, rb_str_new(0, 0));
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -1537,12 +1537,37 @@ x = __ENCODING__
|
|||
end
|
||||
|
||||
def test_shareable_constant_value_unshareable_literal
|
||||
assert_raise_separately(Ractor::IsolationError, /unshareable/,
|
||||
assert_raise_separately(Ractor::IsolationError, /unshareable object to C/,
|
||||
"#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
begin;
|
||||
# shareable_constant_value: literal
|
||||
C = ["Not " + "shareable"]
|
||||
end;
|
||||
|
||||
assert_raise_separately(Ractor::IsolationError, /unshareable object to B::C/,
|
||||
"#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
begin;
|
||||
# shareable_constant_value: literal
|
||||
B = Class.new
|
||||
B::C = ["Not " + "shareable"]
|
||||
end;
|
||||
|
||||
assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
begin;
|
||||
assert_raise_with_message(Ractor::IsolationError, /unshareable object to ::C/) do
|
||||
# shareable_constant_value: literal
|
||||
::C = ["Not " + "shareable"]
|
||||
end
|
||||
end;
|
||||
|
||||
assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
begin;
|
||||
assert_raise_with_message(Ractor::IsolationError, /unshareable object to ::B::C/) do
|
||||
# shareable_constant_value: literal
|
||||
::B = Class.new
|
||||
::B::C = ["Not " + "shareable"]
|
||||
end
|
||||
end;
|
||||
end
|
||||
|
||||
def test_shareable_constant_value_nonliteral
|
||||
|
|
Загрузка…
Ссылка в новой задаче