From 9751a1da2f278e88540c02c1ffcd2a777d10e947 Mon Sep 17 00:00:00 2001 From: nitrix Date: Wed, 22 Mar 2023 00:14:24 +0100 Subject: [PATCH] Eval: Add the corresponding named type to a struct Value. --- .../de/hsrm/compiler/Klang/visitors/EvalVisitor.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/hsrm/compiler/Klang/visitors/EvalVisitor.java b/src/main/java/de/hsrm/compiler/Klang/visitors/EvalVisitor.java index 20788be..c1b93ee 100644 --- a/src/main/java/de/hsrm/compiler/Klang/visitors/EvalVisitor.java +++ b/src/main/java/de/hsrm/compiler/Klang/visitors/EvalVisitor.java @@ -10,6 +10,8 @@ import de.hsrm.compiler.Klang.nodes.loops.DoWhileLoop; import de.hsrm.compiler.Klang.nodes.loops.ForLoop; import de.hsrm.compiler.Klang.nodes.loops.WhileLoop; import de.hsrm.compiler.Klang.nodes.statements.*; +import de.hsrm.compiler.Klang.types.NamedType; +import de.hsrm.compiler.Klang.types.NullType; import de.hsrm.compiler.Klang.types.Type; public class EvalVisitor implements Visitor { @@ -400,7 +402,7 @@ public class EvalVisitor implements Visitor { @Override public Value visit(Block e) { for (var stmt : e.statements) { - Value result = stmt.welcome(this); + var result = stmt.welcome(this); if (result != null) { return result; } @@ -428,7 +430,7 @@ public class EvalVisitor implements Visitor { this.env = newEnv; // Execute - Value result = func.block.welcome(this); + var result = func.block.welcome(this); // Das alte env wiederherstellen this.env = oldEnv; @@ -502,7 +504,10 @@ public class EvalVisitor implements Visitor { struct.put(structDef.fields[i].name, arg); } - return new Value(struct); + var structValue = new Value(struct); + structValue.type = structDef.type; + + return structValue; } @Override