Change Function::apply to catch the result

We don't know whether it'll throw or not!
This commit is contained in:
Alex Crichton 2018-07-20 12:44:21 -07:00
parent 75215134a5
commit f3d4a20ec7
3 changed files with 4 additions and 9 deletions

View File

@ -673,8 +673,8 @@ extern "C" {
/// (or an array-like object). /// (or an array-like object).
/// ///
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
#[wasm_bindgen(method)] #[wasm_bindgen(method, catch)]
pub fn apply(this: &Function, context: &JsValue, args: &Array) -> JsValue; pub fn apply(this: &Function, context: &JsValue, args: &Array) -> Result<JsValue, JsValue>;
/// The bind() method creates a new function that, when called, has its this keyword set to the provided value, /// The bind() method creates a new function that, when called, has its this keyword set to the provided value,
/// with a given sequence of arguments preceding any provided when the new function is called. /// with a given sequence of arguments preceding any provided when the new function is called.

View File

@ -20,7 +20,7 @@ fn apply() {
args.push(1.into()); args.push(1.into());
args.push(2.into()); args.push(2.into());
args.push(3.into()); args.push(3.into());
assert_eq!(MAX.apply(&JsValue::undefined(), &args), 3); assert_eq!(MAX.apply(&JsValue::undefined(), &args).unwrap(), 3);
let arr = JsValue::from(Array::new()); let arr = JsValue::from(Array::new());
let args = Array::new(); let args = Array::new();

View File

@ -3,7 +3,7 @@ use std::fmt;
use std::mem; use std::mem;
use console_error_panic_hook; use console_error_panic_hook;
use js_sys::Array; use js_sys::{Array, Function};
use wasm_bindgen::prelude::*; use wasm_bindgen::prelude::*;
/// Runtime test harness support instantiated in JS. /// Runtime test harness support instantiated in JS.
@ -24,11 +24,6 @@ pub struct Context {
#[wasm_bindgen] #[wasm_bindgen]
extern { extern {
// Redefined from `js_sys` so we can catch the error
pub type Function;
#[wasm_bindgen(method, catch)]
fn apply(this: &Function, new_this: &JsValue, args: &Array) -> Result<JsValue, JsValue>;
#[wasm_bindgen(js_namespace = console, js_name = log)] #[wasm_bindgen(js_namespace = console, js_name = log)]
#[doc(hidden)] #[doc(hidden)]
pub fn console_log(s: &str); pub fn console_log(s: &str);