mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-07-27 01:51:56 +00:00
web-sys: Don't remove dictionaries if required fields are removed
This commit updates the conditional binding generation for dictionaries to ensure that a dictionary is not entirely removed if any of its required fields are removed. If a required field is removed, however, it cannot be constructed, so the constructor is removed.
This commit is contained in:
crates
@@ -1282,6 +1282,18 @@ impl ToTokens for ast::Dictionary {
|
||||
let required_names2 = required_names;
|
||||
let required_names3 = required_names;
|
||||
|
||||
let ctor = if self.ctor {
|
||||
quote! {
|
||||
pub fn new(#(#required_names: #required_types),*) -> #name {
|
||||
let mut _ret = #name { obj: ::js_sys::Object::new() };
|
||||
#(_ret.#required_names2(#required_names3);)*
|
||||
return _ret
|
||||
}
|
||||
}
|
||||
} else {
|
||||
quote! {}
|
||||
};
|
||||
|
||||
let const_name = Ident::new(&format!("_CONST_{}", name), Span::call_site());
|
||||
(quote! {
|
||||
#[derive(Clone, Debug)]
|
||||
@@ -1293,12 +1305,7 @@ impl ToTokens for ast::Dictionary {
|
||||
|
||||
#[allow(clippy::all)]
|
||||
impl #name {
|
||||
pub fn new(#(#required_names: #required_types),*) -> #name {
|
||||
let mut _ret = #name { obj: ::js_sys::Object::new() };
|
||||
#(_ret.#required_names2(#required_names3);)*
|
||||
return _ret
|
||||
}
|
||||
|
||||
#ctor
|
||||
#methods
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user