From dfc3a56dffcdc4d6d2dd71a3f395265da66d5f06 Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Tue, 5 May 2026 15:58:42 +0200 Subject: [PATCH] Fix: Field list and struct all order --- parser/src/ast.rs | 6 ++---- parser/src/lib.rs | 2 +- src/codegen.rs | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/parser/src/ast.rs b/parser/src/ast.rs index 98036bf..a623e18 100644 --- a/parser/src/ast.rs +++ b/parser/src/ast.rs @@ -1,9 +1,7 @@ -use std::collections::HashMap; - use serde::Serialize; #[derive(Debug, Clone, Serialize)] -pub struct FieldList(pub HashMap); +pub struct FieldList(pub Vec<(String, bool, TypeExpr)>); #[derive(Debug, Clone, Serialize)] pub struct ParamList(pub Vec); @@ -83,7 +81,7 @@ pub enum Postfix { FieldAccess(String), Call(Vec), MacroCall(String), - StructCall(HashMap), + StructCall(Vec<(String, Expression)>), Index(Expression), Binary(BinaryOp, Expression), } diff --git a/parser/src/lib.rs b/parser/src/lib.rs index 95be8ce..851713d 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -104,7 +104,7 @@ impl From> for FieldList { }; let param_type = TypeExpr::from(param_inner.next().unwrap()); let param_name = param_inner.next().unwrap().as_str().to_string(); - (param_name, (export, param_type)) + (param_name, export, param_type) }) .collect(); diff --git a/src/codegen.rs b/src/codegen.rs index d6af6dd..b1ebd79 100644 --- a/src/codegen.rs +++ b/src/codegen.rs @@ -284,7 +284,7 @@ impl ToRust for TopLevelKind { cg.addln(&format!("{}struct {} {{", vis, name)); cg.indent += 1; - for (field_name, (_, ty)) in &fields.0 { + for (field_name, _, ty) in &fields.0 { let ty = ty.get_rust(); cg.add_indentedln(&format!("pub {}: {},", field_name, ty)); }