dplassgit / d2lang

D2 is a strongly-typed, statically-typed, (mostly) inferred-type compiled language.
MIT License
6 stars 0 forks source link

Compile-time java exception casting to an array #214

Closed dplassgit closed 1 year ago

dplassgit commented 1 year ago
Exception in thread "main" java.lang.ClassCastException: com.plasstech.lang.d2.type.SimpleType cannot be cast to com.plasstech.lang.d2.type.ArrayType
        at com.plasstech.lang.d2.type.StaticChecker.visit(StaticChecker.java:618)
        at com.plasstech.lang.d2.parse.node.BinOpNode.accept(BinOpNode.java:81)
        at com.plasstech.lang.d2.type.StaticChecker.visit(StaticChecker.java:507)
        at com.plasstech.lang.d2.parse.node.BinOpNode.accept(BinOpNode.java:81)
        at com.plasstech.lang.d2.type.StaticChecker.lambda$visit$0(StaticChecker.java:471)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at com.plasstech.lang.d2.type.StaticChecker.visit(StaticChecker.java:471)
        at com.plasstech.lang.d2.parse.node.CallNode.accept(CallNode.java:37)
        at com.plasstech.lang.d2.type.StaticChecker.visit(StaticChecker.java:1031)
        at com.plasstech.lang.d2.parse.node.ReturnNode.accept(ReturnNode.java:49)
        at com.plasstech.lang.d2.parse.node.BlockNode.lambda$accept$0(BlockNode.java:35)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at com.plasstech.lang.d2.parse.node.BlockNode.accept(BlockNode.java:35)
        at com.plasstech.lang.d2.type.StaticChecker.visit(StaticChecker.java:934)
        at com.plasstech.lang.d2.parse.node.ProcedureNode.accept(ProcedureNode.java:55)
        at com.plasstech.lang.d2.parse.node.BlockNode.lambda$accept$0(BlockNode.java:35)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at com.plasstech.lang.d2.parse.node.BlockNode.accept(BlockNode.java:35)
        at com.plasstech.lang.d2.parse.node.ProgramNode.accept(ProgramNode.java:18)
        at com.plasstech.lang.d2.type.StaticChecker.execute(StaticChecker.java:193)
        at com.plasstech.lang.d2.type.StaticChecker.execute(StaticChecker.java:173)
        at com.plasstech.lang.d2.D2Compiler.main(D2Compiler.java:53)
dplassgit commented 1 year ago

TODO: get test case for this....

dplassgit commented 1 year ago

This only happens if there was already another error in the file (specifically, if a symbol was defined as a proc, then as an array, then the symbol was used as an array.)

But still, it's a bug.