webidl: All interfaces implicitly extend Object

This information is embedded within the algorithm for constructing interfaces
and their prototypes in the section for ECMAScript glue in the WebIDL spec...

This really *should* make the `wasm_bindgen_backend::ast::ImportType::extends`
member from a `Vec<Ident>` into a `Vec<syn::Path>` so that we could use
`js_sys::Object` in the extends field, but that is a huge pain because then the
`ImportedTypes` trait needs to be changed, and all of its implementers, etc...
This commit is contained in:
Nick Fitzgerald
2018-09-12 15:24:04 -07:00
parent 3929e371dd
commit 93a510ef93
11 changed files with 27 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
use futures::future::Future;
use js_sys::Promise;
use js_sys::{Object, Promise};
use wasm_bindgen::prelude::*;
use wasm_bindgen::JsCast;
use wasm_bindgen_futures::JsFuture;
use wasm_bindgen_test::*;
use web_sys::Event;
@@ -15,6 +16,10 @@ fn event() -> impl Future<Item = (), Error = JsValue> {
JsFuture::from(new_event())
.map(Event::from)
.map(|event| {
// All DOM interfaces should inherit from `Object`.
assert!(event.is_instance_of::<Object>());
let _: &Object = event.as_ref();
// These should match `new Event`.
assert!(event.bubbles());
assert!(event.cancelable());