From 12a803a3ae52628ebfe45b98281ead3cf3d941cc Mon Sep 17 00:00:00 2001
From: Miles Vella <673-vella@users.noreply.gitlab.cs.uni-duesseldorf.de>
Date: Mon, 10 Mar 2025 14:46:34 +0100
Subject: [PATCH] Fix lost type info

---
 .../codegenerator/MachineConstantsOptimizer.java     | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/hhu/stups/codegenerator/MachineConstantsOptimizer.java b/src/main/java/de/hhu/stups/codegenerator/MachineConstantsOptimizer.java
index 63ad6b25..acb3ecfa 100644
--- a/src/main/java/de/hhu/stups/codegenerator/MachineConstantsOptimizer.java
+++ b/src/main/java/de/hhu/stups/codegenerator/MachineConstantsOptimizer.java
@@ -313,17 +313,23 @@ public class MachineConstantsOptimizer implements AbstractVisitor<Node, Void> {
 
     @Override
     public Node visitRecordNode(RecordNode node, Void expected) {
-        return new RecordNode(node.getSourceCodePosition(), node.getDeclarations(), node.getExpressions().stream().map(expr -> (ExprNode) visitExprNode(expr, expected)).collect(Collectors.toList()));
+        RecordNode result = new RecordNode(node.getSourceCodePosition(), node.getDeclarations(), node.getExpressions().stream().map(expr -> (ExprNode) visitExprNode(expr, expected)).collect(Collectors.toList()));
+        result.setType(node.getType());
+        return result;
     }
 
     @Override
     public Node visitStructNode(StructNode node, Void expected) {
-        return new StructNode(node.getSourceCodePosition(), node.getDeclarations(), node.getExpressions().stream().map(expr -> (ExprNode) visitExprNode(expr, expected)).collect(Collectors.toList()));
+        StructNode result = new StructNode(node.getSourceCodePosition(), node.getDeclarations(), node.getExpressions().stream().map(expr -> (ExprNode) visitExprNode(expr, expected)).collect(Collectors.toList()));
+        result.setType(node.getType());
+        return result;
     }
 
     @Override
     public Node visitRecordFieldAccessNode(RecordFieldAccessNode node, Void expected) {
-        return new RecordFieldAccessNode(node.getSourceCodePosition(), (ExprNode) visitExprNode(node.getRecord(), expected), node.getIdentifier());
+        RecordFieldAccessNode result = new RecordFieldAccessNode(node.getSourceCodePosition(), (ExprNode) visitExprNode(node.getRecord(), expected), node.getIdentifier());
+        result.setType(node.getType());
+        return result;
     }
 
     @Override
-- 
GitLab