Add WebIDL support for the object type

This maps to the `Object` type in the `js_sys` crate.
This commit is contained in:
Alex Crichton
2018-08-04 15:05:31 -07:00
parent 654bb9b683
commit 90579416cf
6 changed files with 59 additions and 4 deletions

View File

@ -102,7 +102,7 @@ fn compile_ast(mut ast: backend::ast::Program) -> String {
vec![
"str", "char", "bool", "JsValue", "u8", "i8", "u16", "i16", "u32", "i32", "u64", "i64",
"usize", "isize", "f32", "f64", "Result", "String", "Vec", "Option",
"ArrayBuffer",
"ArrayBuffer", "Object",
].into_iter()
.map(|id| proc_macro2::Ident::new(id, proc_macro2::Span::call_site())),
);

View File

@ -430,12 +430,18 @@ impl<'a> FirstPassRecord<'a> {
leading_colon_path_ty(vec![rust_ident("js_sys"), rust_ident("ArrayBuffer")])
}
// The WebIDL `object` maps to the ECMAScript `Object`
//
// https://heycam.github.io/webidl/#es-object
webidl::ast::TypeKind::Object => {
leading_colon_path_ty(vec![rust_ident("js_sys"), rust_ident("Object")])
}
// Support for these types is not yet implemented, so skip
// generating any bindings for this function.
| webidl::ast::TypeKind::DataView
| webidl::ast::TypeKind::Error
| webidl::ast::TypeKind::FrozenArray(_)
| webidl::ast::TypeKind::Object
| webidl::ast::TypeKind::Promise(_)
| webidl::ast::TypeKind::Record(..)
| webidl::ast::TypeKind::Sequence(_)