Skip to content

Commit 5161477

Browse files
authored
Improve error message on assignment <non-js-like> to JS (#373)
* Improve error message on assignment <non-js-like> to JS * change error message * format
1 parent 6124b81 commit 5161477

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

packages/gems/js/ext/js/js-core.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ static VALUE _rb_js_obj_aref(VALUE obj, VALUE key) {
200200
static VALUE _rb_js_obj_aset(VALUE obj, VALUE key, VALUE val) {
201201
struct jsvalue *p = check_jsvalue(obj);
202202
VALUE rv = _rb_js_try_convert(rb_mJS, val);
203+
if (rv == Qnil) {
204+
rb_raise(rb_eTypeError,
205+
"wrong argument type %s (expected JS::Object like object)",
206+
rb_class2name(rb_obj_class(val)));
207+
}
203208
struct jsvalue *v = check_jsvalue(rv);
204209
rb_js_abi_host_string_t key_abi_str;
205210
key = rb_obj_as_string(key);

packages/npm-packages/ruby-wasm-wasi/test/unit/test_object.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,12 @@ def test_member_set
346346
assert_equal 41.to_s, object["bar"].to_s
347347
end
348348

349+
def test_member_set_with_non_js_object
350+
assert_raise_message("wrong argument type Object (expected JS::Object like object)") do
351+
JS.global[:tmp] = Object.new
352+
end
353+
end
354+
349355
def test_member_set_with_stress_gc
350356
GC.stress = true
351357
JS.global[:tmp] = "1"

0 commit comments

Comments
 (0)