From 8bb5dc35842ecb977b0c24ffb9ce798a03f90c52 Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Tue, 5 May 2026 19:49:21 +0200 Subject: [PATCH] Class constructor param fix --- src/codegen.rs | 21 ++++++++++++++++++++- test/src/main.mist | 10 +++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/codegen.rs b/src/codegen.rs index cb3b58f..1d3c873 100644 --- a/src/codegen.rs +++ b/src/codegen.rs @@ -374,7 +374,26 @@ impl ToRust for TopLevelKind { cg.add_indentedln("let mut this: Self = unsafe { std::mem::MaybeUninit::::zeroed().assume_init() };"); - cg.add_indentedln("this.construct_class();"); + for field in fields { + if let Some(init) = &field.init { + cg.add_indentedln(&format!( + "this.{} = {};", + field.decl.name, + init.get_rust() + )); + } + } + + cg.add_indentedln(&format!( + "this.construct_class({});", + constructor + .params + .0 + .iter() + .map(|e| e.name.to_string()) + .collect::>() + .join(", ") + )); cg.add_indentedln("this"); diff --git a/test/src/main.mist b/test/src/main.mist index e53f67d..a376c85 100644 --- a/test/src/main.mist +++ b/test/src/main.mist @@ -1,12 +1,12 @@ class MyClass { - String my_item; + String message; - constructor() { - self.my_item = "Hello World!".to_string(); + public constructor(str* name) { + self.message = format!("Hello {}!", name); } } void main() { - var my_class = MyClass::new(); - println!("{}", my_class.my_item); + var my_class = MyClass::new("World"); + println!("{}", my_class.message); }