tokiwa-software / fuzion

The Fuzion Language Implementation
https://fuzion-lang.dev
GNU General Public License v3.0
46 stars 11 forks source link

Small example results in check-failure in `Clazz.findOuter` #3801

Closed fridis closed 1 week ago

fridis commented 1 week ago

Look at this:

e is
 i(def e.this -> unit) =>
    (option unit).get
 i  _->
_ := e

results in

 > PRECONDITIONS=true POSTCONDITIONS=true ./build/bin/fz  aborteffect.fz

error 1: java.lang.Error: check-condition failed: Clazz.java:2182 "(Errors.any() || i == o || i != null && i.isThisRef() && i.inheritsFrom(o));"
    at dev.flang.util.ANY.check(ANY.java:440)
    at dev.flang.air.Clazz.findOuter(Clazz.java:2182)
    at dev.flang.air.Clazz.replaceThisType(Clazz.java:671)
    at dev.flang.air.Clazz.lambda$actualGenerics$2(Clazz.java:731)
    at dev.flang.util.List.map(List.java:546)
    at dev.flang.air.Clazz.actualGenerics(Clazz.java:731)
    at dev.flang.air.Clazzes.findClazzes(Clazzes.java:807)
    at dev.flang.air.Clazz$EV.action(Clazz.java:138)
    at dev.flang.ast.Expr.visitExpressions(Expr.java:329)
    at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:98)
    at dev.flang.ast.AbstractFeature.visitExpressions(AbstractFeature.java:1591)
    at dev.flang.air.Clazz.inspectCode(Clazz.java:1520)
    at dev.flang.air.Clazz.findAllClasses(Clazz.java:1564)
    at dev.flang.air.Clazzes.findAllClasses(Clazzes.java:469)
    at dev.flang.fuir.FUIR.<init>(FUIR.java:206)
    at dev.flang.opt.Optimizer.fuir(Optimizer.java:77)
    at dev.flang.tools.Fuzion$Backend.processFrontEnd(Fuzion.java:507)
    at dev.flang.tools.Fuzion.lambda$parseArgsForBackend$4(Fuzion.java:1072)
    at dev.flang.tools.Tool.lambda$run$0(Tool.java:142)
    at dev.flang.util.Errors.runAndExit(Errors.java:895)
    at dev.flang.tools.Tool.run(Tool.java:142)
    at dev.flang.tools.Fuzion.main(Fuzion.java:627)

*** fatal errors encountered, stopping.
one error.

also crashes with checks disabled

 > ./build/bin/fz  aborteffect.fz

error 1: Found error clazz in set of clazzes in the IR even though no earlier errors were reported.  This can only be the result of a severe bug.

one error.