From 6c7b5e6cb6e406eade1f3855ae22e423ea1f073a Mon Sep 17 00:00:00 2001 From: Krzysztof Pobiarzyn Date: Mon, 1 Dec 2025 06:59:41 +0100 Subject: [PATCH 1/2] Fix generating getter - call `to_wasm_value` instead of `into_odra_value` --- odra-wasm-client-builder/src/codegen/custom_types.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/odra-wasm-client-builder/src/codegen/custom_types.rs b/odra-wasm-client-builder/src/codegen/custom_types.rs index 377a9c0c..14ffb6d1 100644 --- a/odra-wasm-client-builder/src/codegen/custom_types.rs +++ b/odra-wasm-client-builder/src/codegen/custom_types.rs @@ -270,7 +270,7 @@ fn getter_code(member: &StructMember) -> proc_macro2::TokenStream { quote::quote! { #[wasm_bindgen(getter)] pub fn #ident(&self) -> #ty { - odra_wasm_client::types::IntoWasmValue::into_odra_value(self.#ident.clone()) + odra_wasm_client::types::IntoWasmValue::to_wasm_value(self.#ident.clone()) } } } From ca042e0193720c32904c3b7005e5e3e6bf59c0f5 Mon Sep 17 00:00:00 2001 From: Krzysztof Pobiarzyn Date: Mon, 1 Dec 2025 07:21:53 +0100 Subject: [PATCH 2/2] feat: tests for getter/setter code generation. --- .../src/codegen/custom_types.rs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/odra-wasm-client-builder/src/codegen/custom_types.rs b/odra-wasm-client-builder/src/codegen/custom_types.rs index 14ffb6d1..00e3ecc5 100644 --- a/odra-wasm-client-builder/src/codegen/custom_types.rs +++ b/odra-wasm-client-builder/src/codegen/custom_types.rs @@ -314,4 +314,38 @@ mod test { let expected = parse_quote!(#[wasm_bindgen(js_name = "testFieldRustStyle")] pub test_field_rust_style: String); pretty_assertions::assert_eq!(tokens, expected); } + + #[test] + fn test_getter_code() { + let field = StructMember { + name: "test".to_string(), + description: None, + ty: Type(NamedCLType::U128) + }; + let tokens = getter_code(&field); + let expected = quote::quote!( + #[wasm_bindgen(getter)] + pub fn test(&self) -> odra_wasm_client::types::U128 { + odra_wasm_client::types::IntoWasmValue::to_wasm_value(self.test.clone()) + } + ); + pretty_assertions::assert_eq!(tokens.to_string(), expected.to_string()); + } + + #[test] + fn test_setter_code() { + let field = StructMember { + name: "test".to_string(), + description: None, + ty: Type(NamedCLType::U128) + }; + let tokens = setter_code(&field); + let expected = quote::quote!( + #[wasm_bindgen(setter)] + pub fn set_test(&mut self, value: odra_wasm_client::types::U128) { + self.test = odra_wasm_client::types::IntoOdraValue::into_odra_value(value).unwrap(); + } + ); + pretty_assertions::assert_eq!(tokens.to_string(), expected.to_string()); + } }