diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index bf4df3c7..852d49f1 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2886,7 +2886,7 @@ extern "C" { // JsString #[wasm_bindgen] extern "C" { - #[wasm_bindgen(js_name = String)] + #[wasm_bindgen(js_name = String, extends = Object)] #[derive(Clone)] pub type JsString; diff --git a/crates/js-sys/tests/wasm/JsString.js b/crates/js-sys/tests/wasm/JsString.js new file mode 100644 index 00000000..04a64a9a --- /dev/null +++ b/crates/js-sys/tests/wasm/JsString.js @@ -0,0 +1 @@ +exports.new_string_object = () => new String("hi"); \ No newline at end of file diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index 4b276ba3..66fc5771 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -1,7 +1,21 @@ use wasm_bindgen::JsValue; +use wasm_bindgen::prelude::*; +use wasm_bindgen::JsCast; use wasm_bindgen_test::*; use js_sys::*; +#[wasm_bindgen(module = "tests/wasm/JsString.js")] +extern { + fn new_string_object() -> JsValue; +} + +#[wasm_bindgen_test] +fn js_string_inheritance() { + let string = new_string_object(); + assert!(string.is_instance_of::()); + assert!(string.is_instance_of::()); +} + #[wasm_bindgen_test] fn length() { fn test(s: &str) {