I encountered a bug in the current master revision of the Monty compiler (although this also seems to be broken in earlier versions). The following Monty input program produces an EmptyStackException in the CodeGenerationVisitor:
class Person:
+ Int age():
return 8
Int x := Person().age()
While the following Monty program works fine:
class Person:
+ Int age():
return 8
Person p := Person()
Int x := p.age()
It seems like expressions which are not assigned to a variable are not correctly pushed to the stack. The corresponding stack trace looks like the following:
java.util.EmptyStackException
at java.util.Stack.peek(Stack.java:102)
at java.util.Stack.pop(Stack.java:84)
at de.uni.bremen.monty.moco.visitor.CodeGenerationVisitor.visit(CodeGenerationVisitor.java:200)
at de.uni.bremen.monty.moco.ast.statement.Assignment.visit(Assignment.java:84)
at de.uni.bremen.monty.moco.visitor.BaseVisitor.visitDoubleDispatched(BaseVisitor.java:72)
at de.uni.bremen.monty.moco.visitor.CodeGenerationVisitor.visit(CodeGenerationVisitor.java:191)
at de.uni.bremen.monty.moco.ast.Block.visit(Block.java:106)
at de.uni.bremen.monty.moco.visitor.BaseVisitor.visitDoubleDispatched(BaseVisitor.java:72)
at de.uni.bremen.monty.moco.ast.declaration.ModuleDeclaration.visitChildren(ModuleDeclaration.java:99)
at de.uni.bremen.monty.moco.visitor.BaseVisitor.visit(BaseVisitor.java:128)
at de.uni.bremen.monty.moco.ast.Package.visitChildren(Package.java:77)
at de.uni.bremen.monty.moco.visitor.BaseVisitor.visit(BaseVisitor.java:425)
at de.uni.bremen.monty.moco.visitor.CodeGenerationVisitor.visit(CodeGenerationVisitor.java:179)
at de.uni.bremen.monty.moco.ast.Package.visitChildren(Package.java:74)
at de.uni.bremen.monty.moco.visitor.BaseVisitor.visit(BaseVisitor.java:425)
at de.uni.bremen.monty.moco.visitor.CodeGenerationVisitor.visit(CodeGenerationVisitor.java:174)
at de.uni.bremen.monty.moco.ast.Package.visit(Package.java:68)
at de.uni.bremen.monty.moco.visitor.BaseVisitor.visitDoubleDispatched(BaseVisitor.java:72)
at de.uni.bremen.monty.moco.Main.visitVisitors(Main.java:127)
at de.uni.bremen.monty.moco.Main.main(Main.java:246)
I encountered a bug in the current master revision of the Monty compiler (although this also seems to be broken in earlier versions). The following Monty input program produces an EmptyStackException in the CodeGenerationVisitor:
While the following Monty program works fine:
It seems like expressions which are not assigned to a variable are not correctly pushed to the stack. The corresponding stack trace looks like the following: