diff --git a/src/main/java/abstractSyntaxTree/Statement/PrintStatement.java b/src/main/java/abstractSyntaxTree/Statement/PrintStatement.java index eb5d8a0..58439c3 100644 --- a/src/main/java/abstractSyntaxTree/Statement/PrintStatement.java +++ b/src/main/java/abstractSyntaxTree/Statement/PrintStatement.java @@ -60,9 +60,13 @@ public class PrintStatement extends AbstractType implements IStatement { } counter++; } - + // If not a localVar, maybe a class field of this class if (index == -1){ - throw new Exception("Variable " + variableName + " not found"); + String typeOfField = typeContext.get(thisClass).get(variableName); + if (typeOfField == null){ + throw new Exception("Variable " + variableName + " not found in local variables or class fields."); + } + mv.visitFieldInsn(Opcodes.GETSTATIC, thisClass, variableName, "I"); } mv.visitVarInsn(Opcodes.ILOAD, index);