diff --git a/Triangle.Compiler/src/main/java/triangle/codeGenerator/Encoder.java b/Triangle.Compiler/src/main/java/triangle/codeGenerator/Encoder.java index f3a650c..3066815 100644 --- a/Triangle.Compiler/src/main/java/triangle/codeGenerator/Encoder.java +++ b/Triangle.Compiler/src/main/java/triangle/codeGenerator/Encoder.java @@ -545,7 +545,7 @@ public final class Encoder implements ActualParameterVisitor, public Integer visitRecordTypeDenoter(RecordTypeDenoter ast, Frame frame) { int typeSize; if (ast.entity == null) { - typeSize = ast.FT.visit(this, null); + typeSize = ast.FT.visit(this, frame); ast.entity = new TypeRepresentation(typeSize); writeTableDetails(ast); } else { @@ -556,6 +556,10 @@ public final class Encoder implements ActualParameterVisitor, @Override public Integer visitMultipleFieldTypeDenoter(MultipleFieldTypeDenoter ast, Frame frame) { + if (frame == null) { // in this case, we're just using the frame to wrap up the size + frame = Frame.Initial; + } + var offset = frame.getSize(); int fieldSize; if (ast.entity == null) {