From 687412ec50a5babda2203b4411e9d6148d80fa0b Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Fri, 17 Aug 2018 13:09:30 -0700 Subject: [PATCH 1/3] Test for AsRef implementations Part of #670 --- crates/js-sys/tests/wasm/Array.rs | 1 + crates/js-sys/tests/wasm/ArrayBuffer.rs | 1 + crates/js-sys/tests/wasm/Boolean.rs | 1 + crates/js-sys/tests/wasm/DataView.rs | 2 ++ crates/js-sys/tests/wasm/Date.rs | 1 + crates/js-sys/tests/wasm/Error.rs | 1 + crates/js-sys/tests/wasm/EvalError.rs | 2 ++ crates/js-sys/tests/wasm/Function.rs | 1 + crates/js-sys/tests/wasm/Map.rs | 1 + crates/js-sys/tests/wasm/Number.rs | 1 + crates/js-sys/tests/wasm/RegExp.rs | 1 + crates/js-sys/tests/wasm/Set.rs | 1 + crates/js-sys/tests/wasm/WeakMap.rs | 1 + crates/js-sys/tests/wasm/WeakSet.rs | 1 + 14 files changed, 16 insertions(+) diff --git a/crates/js-sys/tests/wasm/Array.rs b/crates/js-sys/tests/wasm/Array.rs index 604bbf85..fe6d8867 100644 --- a/crates/js-sys/tests/wasm/Array.rs +++ b/crates/js-sys/tests/wasm/Array.rs @@ -306,4 +306,5 @@ fn array_inheritance() { let array = Array::new(); assert!(array.is_instance_of::()); assert!(array.is_instance_of::()); + let _: &Object = array.as_ref(); } diff --git a/crates/js-sys/tests/wasm/ArrayBuffer.rs b/crates/js-sys/tests/wasm/ArrayBuffer.rs index 21fa0491..a4a082a4 100644 --- a/crates/js-sys/tests/wasm/ArrayBuffer.rs +++ b/crates/js-sys/tests/wasm/ArrayBuffer.rs @@ -41,4 +41,5 @@ fn arraybuffer_inheritance() { let buf = ArrayBuffer::new(4); assert!(buf.is_instance_of::()); assert!(buf.is_instance_of::()); + let _: &Object = buf.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Boolean.rs b/crates/js-sys/tests/wasm/Boolean.rs index 34c53e01..c7aa9377 100644 --- a/crates/js-sys/tests/wasm/Boolean.rs +++ b/crates/js-sys/tests/wasm/Boolean.rs @@ -18,4 +18,5 @@ fn boolean_inheritance() { let b = Boolean::new(&JsValue::from(true)); assert!(b.is_instance_of::()); assert!(b.is_instance_of::()); + let _: &Object = b.as_ref(); } diff --git a/crates/js-sys/tests/wasm/DataView.rs b/crates/js-sys/tests/wasm/DataView.rs index 8efe0c6d..122a7dd2 100644 --- a/crates/js-sys/tests/wasm/DataView.rs +++ b/crates/js-sys/tests/wasm/DataView.rs @@ -50,4 +50,6 @@ fn dataview_inheritance() { assert!(v.is_instance_of::()); assert!(v.is_instance_of::()); + + let _: &Object = v.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Date.rs b/crates/js-sys/tests/wasm/Date.rs index c4026b47..d0496fa4 100644 --- a/crates/js-sys/tests/wasm/Date.rs +++ b/crates/js-sys/tests/wasm/Date.rs @@ -413,4 +413,5 @@ fn date_inheritance() { let date = Date::new(&"August 19, 1975 23:15:30".into()); assert!(date.is_instance_of::()); assert!(date.is_instance_of::()); + let _: &Object = date.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Error.rs b/crates/js-sys/tests/wasm/Error.rs index abe856f1..e05ed23c 100644 --- a/crates/js-sys/tests/wasm/Error.rs +++ b/crates/js-sys/tests/wasm/Error.rs @@ -42,4 +42,5 @@ fn error_inheritance() { let error = Error::new("test"); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Object = error.as_ref(); } diff --git a/crates/js-sys/tests/wasm/EvalError.rs b/crates/js-sys/tests/wasm/EvalError.rs index d1deb73a..e23a25b2 100644 --- a/crates/js-sys/tests/wasm/EvalError.rs +++ b/crates/js-sys/tests/wasm/EvalError.rs @@ -52,4 +52,6 @@ fn evalerror_inheritance() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Function.rs b/crates/js-sys/tests/wasm/Function.rs index c7fed283..86bfa919 100644 --- a/crates/js-sys/tests/wasm/Function.rs +++ b/crates/js-sys/tests/wasm/Function.rs @@ -66,4 +66,5 @@ fn to_string() { fn function_inheritance() { assert!(MAX.is_instance_of::()); assert!(MAX.is_instance_of::()); + let _: &Object = MAX.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Map.rs b/crates/js-sys/tests/wasm/Map.rs index f9ba7740..91282282 100644 --- a/crates/js-sys/tests/wasm/Map.rs +++ b/crates/js-sys/tests/wasm/Map.rs @@ -93,4 +93,5 @@ fn map_inheritance() { let map = Map::new(); assert!(map.is_instance_of::()); assert!(map.is_instance_of::()); + let _: &Object = map.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Number.rs b/crates/js-sys/tests/wasm/Number.rs index 9d43f8a2..b3fae6b1 100644 --- a/crates/js-sys/tests/wasm/Number.rs +++ b/crates/js-sys/tests/wasm/Number.rs @@ -111,4 +111,5 @@ fn number_inheritance() { let n = Number::new(&JsValue::from(42)); assert!(n.is_instance_of::()); assert!(n.is_instance_of::()); + let _: &Object = n.as_ref(); } diff --git a/crates/js-sys/tests/wasm/RegExp.rs b/crates/js-sys/tests/wasm/RegExp.rs index a77d4892..eedbaafc 100644 --- a/crates/js-sys/tests/wasm/RegExp.rs +++ b/crates/js-sys/tests/wasm/RegExp.rs @@ -7,6 +7,7 @@ fn regexp_inheritance() { let re = RegExp::new(".", ""); assert!(re.is_instance_of::()); assert!(re.is_instance_of::()); + let _: &Object = re.as_ref(); } #[wasm_bindgen_test] diff --git a/crates/js-sys/tests/wasm/Set.rs b/crates/js-sys/tests/wasm/Set.rs index 419d66b8..f475c5a0 100644 --- a/crates/js-sys/tests/wasm/Set.rs +++ b/crates/js-sys/tests/wasm/Set.rs @@ -87,4 +87,5 @@ fn set_inheritance() { let set = Set::new(&JsValue::undefined()); assert!(set.is_instance_of::()); assert!(set.is_instance_of::()); + let _: &Object = set.as_ref(); } diff --git a/crates/js-sys/tests/wasm/WeakMap.rs b/crates/js-sys/tests/wasm/WeakMap.rs index 8cfe464c..9b3f0d78 100644 --- a/crates/js-sys/tests/wasm/WeakMap.rs +++ b/crates/js-sys/tests/wasm/WeakMap.rs @@ -57,4 +57,5 @@ fn weakmap_inheritance() { let map = WeakMap::new(); assert!(map.is_instance_of::()); assert!(map.is_instance_of::()); + let _: &Object = map.as_ref(); } diff --git a/crates/js-sys/tests/wasm/WeakSet.rs b/crates/js-sys/tests/wasm/WeakSet.rs index dc70ca8b..541bd448 100644 --- a/crates/js-sys/tests/wasm/WeakSet.rs +++ b/crates/js-sys/tests/wasm/WeakSet.rs @@ -47,4 +47,5 @@ fn weakset_inheritance() { let set = WeakSet::new(); assert!(set.is_instance_of::()); assert!(set.is_instance_of::()); + let _: &Object = set.as_ref(); } From bec3178e3c2046a9aa7fde72258811fd68030da6 Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Fri, 17 Aug 2018 13:10:11 -0700 Subject: [PATCH 2/3] Make all errors extend Object Part of #670 --- crates/js-sys/src/lib.rs | 10 +++++----- crates/js-sys/tests/wasm/RangeError.rs | 2 ++ crates/js-sys/tests/wasm/ReferenceError.rs | 2 ++ crates/js-sys/tests/wasm/SyntaxError.rs | 2 ++ crates/js-sys/tests/wasm/TypeError.rs | 2 ++ crates/js-sys/tests/wasm/UriError.rs | 2 ++ 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 67cff622..55b5c8d6 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2092,7 +2092,7 @@ extern { /// or range of allowed values. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError - #[wasm_bindgen(extends = Error)] + #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type RangeError; @@ -2111,7 +2111,7 @@ extern { /// variable is referenced. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError - #[wasm_bindgen(extends = Error)] + #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type ReferenceError; @@ -2505,7 +2505,7 @@ extern { /// parsing code. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError - #[wasm_bindgen(extends = Error)] + #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type SyntaxError; @@ -2525,7 +2525,7 @@ extern { /// expected type. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError - #[wasm_bindgen(extends = Error)] + #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type TypeError; @@ -2758,7 +2758,7 @@ extern { /// function was used in a wrong way. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError - #[wasm_bindgen(extends = Error, js_name = URIError)] + #[wasm_bindgen(extends = Error, extends = Object, js_name = URIError)] #[derive(Clone, Debug)] pub type UriError; diff --git a/crates/js-sys/tests/wasm/RangeError.rs b/crates/js-sys/tests/wasm/RangeError.rs index 18c7d7d0..93b42b99 100644 --- a/crates/js-sys/tests/wasm/RangeError.rs +++ b/crates/js-sys/tests/wasm/RangeError.rs @@ -9,6 +9,8 @@ fn range_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "out of range yo"); diff --git a/crates/js-sys/tests/wasm/ReferenceError.rs b/crates/js-sys/tests/wasm/ReferenceError.rs index 218ad52e..82d6e692 100644 --- a/crates/js-sys/tests/wasm/ReferenceError.rs +++ b/crates/js-sys/tests/wasm/ReferenceError.rs @@ -9,6 +9,8 @@ fn reference_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "bad reference, fool"); diff --git a/crates/js-sys/tests/wasm/SyntaxError.rs b/crates/js-sys/tests/wasm/SyntaxError.rs index 23a211f0..136746af 100644 --- a/crates/js-sys/tests/wasm/SyntaxError.rs +++ b/crates/js-sys/tests/wasm/SyntaxError.rs @@ -9,6 +9,8 @@ fn syntax_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); diff --git a/crates/js-sys/tests/wasm/TypeError.rs b/crates/js-sys/tests/wasm/TypeError.rs index ef7b09fb..e9a9957a 100644 --- a/crates/js-sys/tests/wasm/TypeError.rs +++ b/crates/js-sys/tests/wasm/TypeError.rs @@ -9,6 +9,8 @@ fn type_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); diff --git a/crates/js-sys/tests/wasm/UriError.rs b/crates/js-sys/tests/wasm/UriError.rs index ddcafc49..df939e5d 100644 --- a/crates/js-sys/tests/wasm/UriError.rs +++ b/crates/js-sys/tests/wasm/UriError.rs @@ -9,6 +9,8 @@ fn uri_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); From 6dccb7f777c56ad9b209c78ec660b24f5f10c2c5 Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Fri, 17 Aug 2018 14:50:15 -0700 Subject: [PATCH 3/3] Remove blank line Part of #670 --- crates/js-sys/tests/wasm/DataView.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/js-sys/tests/wasm/DataView.rs b/crates/js-sys/tests/wasm/DataView.rs index 122a7dd2..84fdf0f6 100644 --- a/crates/js-sys/tests/wasm/DataView.rs +++ b/crates/js-sys/tests/wasm/DataView.rs @@ -1,7 +1,7 @@ +use js_sys::*; +use wasm_bindgen::JsCast; use wasm_bindgen::JsValue; use wasm_bindgen_test::*; -use wasm_bindgen::JsCast; -use js_sys::*; #[wasm_bindgen_test] fn test() { @@ -36,7 +36,9 @@ fn test() { v.set_int8(0, 42); // TODO: figure out how to do `bytes[2]` - bytes.subarray(2, 3).for_each(&mut |x, _, _| assert_eq!(x, 42)); + bytes + .subarray(2, 3) + .for_each(&mut |x, _, _| assert_eq!(x, 42)); } #[wasm_bindgen_test] @@ -50,6 +52,5 @@ fn dataview_inheritance() { assert!(v.is_instance_of::()); assert!(v.is_instance_of::()); - let _: &Object = v.as_ref(); }