Fix default initializers in classes

This commit is contained in:
2026-07-04 09:03:52 +02:00
parent b02439edfc
commit 603ce1eb1e
2 changed files with 9 additions and 5 deletions
+2 -1
View File
@@ -352,8 +352,9 @@ impl ClassProcessedData {
for field in &self.fields { for field in &self.fields {
if let Some(init) = &field.item.init { if let Some(init) = &field.item.init {
field.gen_span(cg); field.gen_span(cg);
cg.add_indentedln(&format!("this.{} = ", field.item.decl.name.get_rust())); cg.add_indented(&format!("this.{} = ", field.item.decl.name.get_rust()));
init.gen_rust(ctx, cg); init.gen_rust(ctx, cg);
cg.addln(";");
} }
} }
+4 -1
View File
@@ -46,10 +46,13 @@ pub fn check_class_semantics<'a>(top_level: &TopLevel) -> Result<(), Vec<Semanti
if let Some(constructor) = constructor { if let Some(constructor) = constructor {
let mut fields = fields let mut fields = fields
.iter() .iter()
.map(|field| Spanned { .filter_map(|field| match field.item.init {
Some(_) => None,
None => Some(Spanned {
item: field.item.decl.name.clone(), item: field.item.decl.name.clone(),
line: field.line, line: field.line,
column: field.column, column: field.column,
}),
}) })
.collect::<Vec<_>>(); .collect::<Vec<_>>();