precise setter function calling in case more than 1 trait is implemented (collision)
This commit is contained in:
parent
5b8ec05589
commit
2b8d3942da
|
@ -590,14 +590,16 @@ pub mod rust {
|
|||
fn generate_struct_ctor(
|
||||
&self,
|
||||
_class: &Class,
|
||||
_name: &str,
|
||||
type_name: &str,
|
||||
fields: &Vec<(&ClassField, Cow<str>, String)>,
|
||||
) -> TokenStream {
|
||||
let fields_defs = fields.iter().map(|(_, name, ty)| quote! {#name: #ty});
|
||||
|
||||
let this_field_asignments = fields.iter().map(|(_, name, _ty)| {
|
||||
let setter = format_ident!("set_{}", name);
|
||||
quote! {this.#setter(#name);}
|
||||
let field_trait = format_ident!("{type_name}Fields");
|
||||
|
||||
quote! {<Self as #field_trait>::#setter(this, #name);}
|
||||
});
|
||||
|
||||
// FIXME: handle super struct fields aswell, ARK doesnt seem to have those anyways.
|
||||
|
@ -696,8 +698,6 @@ pub mod rust {
|
|||
impl #method_trait for #name {}
|
||||
};
|
||||
|
||||
// TODO: impl super-type fields and methods.
|
||||
|
||||
let mut sup = class.super_class;
|
||||
let super_traits = core::iter::from_fn(|| {
|
||||
if let Some(key) = sup {
|
||||
|
|
Loading…
Reference in a new issue