diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 2745f7ef..3bdb3a0f 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2496,6 +2496,27 @@ extern { pub fn values(set: &Set) -> Iterator; } +// SyntaxError +#[wasm_bindgen] +extern { + /// A SyntaxError is thrown when the JavaScript engine encounters tokens or + /// token order that does not conform to the syntax of the language when + /// parsing code. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError + #[wasm_bindgen(extends = Error)] + #[derive(Clone, Debug)] + pub type SyntaxError; + + /// A SyntaxError is thrown when the JavaScript engine encounters tokens or + /// token order that does not conform to the syntax of the language when + /// parsing code. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError + #[wasm_bindgen(constructor)] + pub fn new(message: &str) -> SyntaxError; +} + // Uint8Array #[wasm_bindgen] extern "C" { diff --git a/crates/js-sys/tests/wasm/SyntaxError.rs b/crates/js-sys/tests/wasm/SyntaxError.rs new file mode 100644 index 00000000..57d86371 --- /dev/null +++ b/crates/js-sys/tests/wasm/SyntaxError.rs @@ -0,0 +1,14 @@ +use wasm_bindgen::JsValue; +use wasm_bindgen_test::*; +use wasm_bindgen::JsCast; +use js_sys::*; + +#[wasm_bindgen_test] +fn syntax_error() { + let error = SyntaxError::new("msg"); + assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); + + let base: &Error = error.as_ref(); + assert_eq!(JsValue::from(base.message()), "msg"); +} diff --git a/crates/js-sys/tests/wasm/main.rs b/crates/js-sys/tests/wasm/main.rs index f1e1138b..e3b6ec90 100755 --- a/crates/js-sys/tests/wasm/main.rs +++ b/crates/js-sys/tests/wasm/main.rs @@ -32,6 +32,7 @@ pub mod RegExp; pub mod Set; pub mod SetIterator; pub mod Symbol; +pub mod SyntaxError; pub mod TypedArray; pub mod UriError; pub mod WeakMap;