From 2b8d3942da04c224ff2586da794de9e93873f76a Mon Sep 17 00:00:00 2001 From: Janis Date: Mon, 26 Jun 2023 12:56:00 +0200 Subject: [PATCH] precise setter function calling in case more than 1 trait is implemented (collision) --- sdk-builder/src/main.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk-builder/src/main.rs b/sdk-builder/src/main.rs index b372a45..9a37561 100644 --- a/sdk-builder/src/main.rs +++ b/sdk-builder/src/main.rs @@ -590,14 +590,16 @@ pub mod rust { fn generate_struct_ctor( &self, _class: &Class, - _name: &str, + type_name: &str, fields: &Vec<(&ClassField, Cow, 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! {::#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 {