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:
parent
e7b0a01002
commit
bf72cb84ca
@ -1060,6 +1060,7 @@ rb_node_const_decl_val(const NODE *node)
|
|||||||
}
|
}
|
||||||
else if (n && nd_type_p(n, NODE_COLON3)) {
|
else if (n && nd_type_p(n, NODE_COLON3)) {
|
||||||
// ::Const::Name
|
// ::Const::Name
|
||||||
|
rb_ary_push(path, rb_id2str(RNODE_COLON3(n)->nd_mid));
|
||||||
rb_ary_push(path, rb_str_new(0, 0));
|
rb_ary_push(path, rb_str_new(0, 0));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1537,12 +1537,37 @@ x = __ENCODING__
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_shareable_constant_value_unshareable_literal
|
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;"}\n#{<<~'end;'}")
|
||||||
begin;
|
begin;
|
||||||
# shareable_constant_value: literal
|
# shareable_constant_value: literal
|
||||||
C = ["Not " + "shareable"]
|
C = ["Not " + "shareable"]
|
||||||
end;
|
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
|
end
|
||||||
|
|
||||||
def test_shareable_constant_value_nonliteral
|
def test_shareable_constant_value_nonliteral
|
||||||
|
Loading…
x
Reference in New Issue
Block a user