diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index ed212618..01a75c1a 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2103,6 +2103,25 @@ extern { pub fn new(message: &str) -> RangeError; } +// ReferenceError +#[wasm_bindgen] +extern { + /// The ReferenceError object represents an error when a non-existent + /// variable is referenced. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError + #[wasm_bindgen(extends = Error)] + #[derive(Clone, Debug)] + pub type ReferenceError; + + /// The ReferenceError object represents an error when a non-existent + /// variable is referenced. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError + #[wasm_bindgen(constructor)] + pub fn new(message: &str) -> ReferenceError; +} + // Reflect #[wasm_bindgen] extern "C" { diff --git a/crates/js-sys/tests/wasm/ReferenceError.rs b/crates/js-sys/tests/wasm/ReferenceError.rs new file mode 100644 index 00000000..22e2518c --- /dev/null +++ b/crates/js-sys/tests/wasm/ReferenceError.rs @@ -0,0 +1,14 @@ +use wasm_bindgen::JsValue; +use wasm_bindgen_test::*; +use wasm_bindgen::JsCast; +use js_sys::*; + +#[wasm_bindgen_test] +fn reference_error() { + let error = ReferenceError::new("bad reference, fool"); + assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); + + let base: &Error = error.as_ref(); + assert_eq!(JsValue::from(base.message()), "bad reference, fool"); +} diff --git a/crates/js-sys/tests/wasm/main.rs b/crates/js-sys/tests/wasm/main.rs index 49319b4d..628eb59b 100755 --- a/crates/js-sys/tests/wasm/main.rs +++ b/crates/js-sys/tests/wasm/main.rs @@ -26,6 +26,7 @@ pub mod Number; pub mod Object; pub mod Proxy; pub mod RangeError; +pub mod ReferenceError; pub mod Reflect; pub mod RegExp; pub mod Set;