AST struct call

This commit is contained in:
2026-04-23 19:10:52 +02:00
parent 488b985992
commit 5855a6cb5b
3 changed files with 10 additions and 1 deletions
+1
View File
@@ -50,6 +50,7 @@ pub enum TopLevel {
pub enum Postfix { pub enum Postfix {
FieldAccess(String), FieldAccess(String),
Call(Vec<Expression>), Call(Vec<Expression>),
StructCall(HashMap<String, Expression>),
Index(Expression), Index(Expression),
Binary(BinaryOp, Expression), Binary(BinaryOp, Expression),
} }
+8
View File
@@ -271,6 +271,14 @@ impl GoCodegen {
.join(", "); .join(", ");
format!("{}({})", result, args_str) format!("{}({})", result, args_str)
} }
Postfix::StructCall(fields) => {
let args_str = fields
.iter()
.map(|(a, b)| format!("{a}: {}", self.generate_expression(b)))
.collect::<Vec<_>>()
.join(", ");
format!("{}{{{}}}", result, args_str)
}
Postfix::Index(idx) => format!("{}[{}]", result, self.generate_expression(idx)), Postfix::Index(idx) => format!("{}[{}]", result, self.generate_expression(idx)),
Postfix::Binary(op, rhs) => { Postfix::Binary(op, rhs) => {
let op_str = match op { let op_str = match op {
+1 -1
View File
@@ -6,6 +6,6 @@ public struct Idk {
} }
int test(int a, int b) { int test(int a, int b) {
Idk bro = 10; Idk bro = Idk { a: 10, b: 10 };
return a + b + bro.a; return a + b + bro.a;
} }