fuzion
fuzion copied to clipboard
AoC issue: Surprise infinite loop
These two loops
> cat test_loop2.fz
for i := 0, i+1
while i < 3
do
say "hi"
for i := 0, i+1
until i > 3
do
say "hey!"
behave completely differently, the second loop are actually two loops where the last one is an infinite loop:
> ./build/bin/fz test_loop2.fz | head -n 10
hi
hi
hi
hey!
hey!
hey!
hey!
hey!
hey!
hey!
Removing one LF
for i := 0, i+1
while i < 3 do
say "hi"
for i := 0, i+1
until i > 3 do
say "hey!"
crashes fz:
> ./build/bin/fz test_loop1.fz | head -n 10
error 1: java.util.EmptyStackException
at java.base/java.util.Stack.peek(Stack.java:101)
at java.base/java.util.Stack.pop(Stack.java:83)
at dev.flang.fuir.analysis.AbstractInterpreter.pop(AbstractInterpreter.java:380)
at dev.flang.fuir.analysis.AbstractInterpreter.process(AbstractInterpreter.java:619)
at dev.flang.fuir.analysis.AbstractInterpreter.process(AbstractInterpreter.java:515)
at dev.flang.fuir.analysis.AbstractInterpreter.process(AbstractInterpreter.java:478)
at dev.flang.be.jvm.JVM.codeForRoutine(JVM.java:1126)
at dev.flang.be.jvm.JVM.code(JVM.java:843)
at dev.flang.be.jvm.JVM$CompilePhase$3.compile(JVM.java:465)
at dev.flang.be.jvm.JVM.lambda$createCode$0(JVM.java:817)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.ReferencePipeline$Head.forEachOrdered(ReferencePipeline.java:772)
at dev.flang.be.jvm.JVM.createCode(JVM.java:810)
at dev.flang.be.jvm.JVM.compile(JVM.java:795)
at dev.flang.tools.Fuzion$Backend$3.process(Fuzion.java:163)
at dev.flang.tools.Fuzion$Backend.processFrontEnd(Fuzion.java:444)
at dev.flang.tools.Fuzion.lambda$parseArgsForBackend$3(Fuzion.java:908)
at dev.flang.tools.Tool.lambda$run$0(Tool.java:145)
at dev.flang.util.Errors.runAndExit(Errors.java:790)
at dev.flang.tools.Tool.run(Tool.java:145)
at dev.flang.tools.Fuzion.main(Fuzion.java:557)
*** fatal errors encountered, stopping.
not yet fixed, it seems