From 4e7e5037859dc9ecd05e4ecd00512360272ed200 Mon Sep 17 00:00:00 2001 From: ben Date: Sat, 23 Mar 2019 19:05:56 +1300 Subject: [PATCH] Fix wasm build, to reflect that isinstance now takes a PyClassRef --- wasm/lib/src/browser_module.rs | 12 +++++++----- wasm/lib/src/convert.rs | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/wasm/lib/src/browser_module.rs b/wasm/lib/src/browser_module.rs index e78779bf2..566edc8ef 100644 --- a/wasm/lib/src/browser_module.rs +++ b/wasm/lib/src/browser_module.rs @@ -9,9 +9,11 @@ use wasm_bindgen_futures::{future_to_promise, JsFuture}; use rustpython_vm::function::PyFuncArgs; use rustpython_vm::import::import_module; +use rustpython_vm::obj::objtype::PyClassRef; use rustpython_vm::obj::{objint, objstr}; use rustpython_vm::pyobject::{ - AttributeProtocol, PyContext, PyObject, PyObjectRef, PyResult, PyValue, TypeProtocol, + AttributeProtocol, PyContext, PyObject, PyObjectRef, PyResult, PyValue, TryFromObject, + TypeProtocol, }; use rustpython_vm::VirtualMachine; @@ -170,8 +172,8 @@ impl PyValue for PyPromise { } impl PyPromise { - pub fn new_obj(promise_type: PyObjectRef, value: Promise) -> PyObjectRef { - PyObject::new(PyPromise { value }, promise_type) + pub fn new_obj(promise_type: PyClassRef, value: Promise) -> PyObjectRef { + PyObject::new(PyPromise { value }, promise_type.into_object()) } } @@ -182,9 +184,9 @@ pub fn get_promise_value(obj: &PyObjectRef) -> Promise { panic!("Inner error getting promise") } -pub fn import_promise_type(vm: &VirtualMachine) -> PyResult { +pub fn import_promise_type(vm: &VirtualMachine) -> PyResult { match import_module(vm, PathBuf::default(), BROWSER_NAME)?.get_attr("Promise") { - Some(promise) => Ok(promise), + Some(promise) => PyClassRef::try_from_object(vm, promise), None => Err(vm.new_not_implemented_error("No Promise".to_string())), } } diff --git a/wasm/lib/src/convert.rs b/wasm/lib/src/convert.rs index 70d67d88d..122ff1763 100644 --- a/wasm/lib/src/convert.rs +++ b/wasm/lib/src/convert.rs @@ -13,7 +13,7 @@ use crate::vm_class::{AccessibleVM, WASMVirtualMachine}; pub fn py_err_to_js_err(vm: &VirtualMachine, py_err: &PyObjectRef) -> JsValue { macro_rules! map_exceptions { ($py_exc:ident, $msg:expr, { $($py_exc_ty:expr => $js_err_new:expr),*$(,)? }) => { - $(if objtype::isinstance($py_exc, $py_exc_ty.as_object()) { + $(if objtype::isinstance($py_exc, $py_exc_ty) { JsValue::from($js_err_new($msg)) } else)* { JsValue::from(js_sys::Error::new($msg))