fuzion
fuzion copied to clipboard
Small example using type parameters, type inference and `.this` results in crash
take this code
e is
e.type.r e.this
type.r(E type : e, v E) =>
f : e is
_ := f
and runfz with pre/postconditions enabled, you get
> PRECONDITIONS=true POSTCONDITIONS=true ./build/bin/fz test_type.fz
error 1: java.lang.Error: check-condition failed: Clazz.java:2228 "(Errors.any() || i == o || i != null && i.isThisRef() && i.inheritsFrom(o));"
at dev.flang.util.ANY.check(ANY.java:439)
at dev.flang.air.Clazz.findOuter(Clazz.java:2228)
at dev.flang.air.Clazz.replaceThisType(Clazz.java:697)
at dev.flang.air.Clazz.lambda$actualGenerics$2(Clazz.java:757)
at dev.flang.util.List.map(List.java:546)
at dev.flang.air.Clazz.actualGenerics(Clazz.java:757)
at dev.flang.air.Clazzes.findClazzes(Clazzes.java:810)
at dev.flang.air.Clazz$EV.action(Clazz.java:171)
at dev.flang.ast.Expr.visitExpressions(Expr.java:339)
at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:99)
at dev.flang.ast.AbstractBlock.visitExpressions(AbstractBlock.java:99)
at dev.flang.ast.AbstractFeature.visitExpressions(AbstractFeature.java:1611)
at dev.flang.air.Clazz.inspectCode(Clazz.java:1546)
at dev.flang.air.Clazz.inspectCode(Clazz.java:1576)
at dev.flang.air.Clazz.findAllClasses(Clazz.java:1590)
at dev.flang.air.Clazzes.findAllClasses(Clazzes.java:472)
at dev.flang.fuir.FUIR.<init>(FUIR.java:187)
at dev.flang.opt.Optimizer.fuir(Optimizer.java:73)
at dev.flang.tools.Fuzion$Backend.processFrontEnd(Fuzion.java:506)
at dev.flang.tools.Fuzion.lambda$parseArgsForBackend$4(Fuzion.java:1071)
at dev.flang.tools.Tool.lambda$run$0(Tool.java:142)
at dev.flang.util.Errors.runAndExit(Errors.java:878)
at dev.flang.tools.Tool.run(Tool.java:142)
at dev.flang.tools.Fuzion.main(Fuzion.java:626)
*** fatal errors encountered, stopping.
one error.