fuzion
fuzion copied to clipboard
Call to inherited type feature declared in nested feature results in precondition failure
This currently fails in #3157: This example
a is
b is
type.hi =>
x : a.b is
x.type.hi
crashes if preconditions are enabled:
> PRECONDITIONS=true POSTCONDITIONS=true ./build/bin/fz test_it.fz
error 1: java.lang.Error: require-condition1 failed: Clazzes.java:1045 "(Errors.any() || !thiz.dependsOnGenerics(), outerClazz != null || thiz.feature().outer() == null, Errors.any() || thiz == Types.t_ERROR || outerClazz == null || outerClazz.feature().inheritsFrom(thiz.feature().outer()));"
at dev.flang.util.ANY.require(ANY.java:133)
at dev.flang.air.Clazzes.clazzWithSpecificOuter(Clazzes.java:1045)
at dev.flang.air.Clazz.lookup(Clazz.java:1324)
at dev.flang.air.Clazzes.findClazzes(Clazzes.java:732)
at dev.flang.air.Clazz$EV.action(Clazz.java:132)
at dev.flang.ast.Expr.visitExpressions(Expr.java:338)
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:1532)
at dev.flang.air.Clazz.inspectCode(Clazz.java:1517)
at dev.flang.air.Clazz.findAllClasses(Clazz.java:1562)
at dev.flang.air.Clazzes.findAllClasses(Clazzes.java:408)
at dev.flang.fuir.FUIR.<init>(FUIR.java:224)
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$3(Fuzion.java:1071)
at dev.flang.tools.Tool.lambda$run$0(Tool.java:141)
at dev.flang.util.Errors.runAndExit(Errors.java:964)
at dev.flang.tools.Tool.run(Tool.java:141)
at dev.flang.tools.Fuzion.main(Fuzion.java:626)
*** fatal errors encountered, stopping.
one error.