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)); }