fuzion icon indicating copy to clipboard operation
fuzion copied to clipboard

Small example using type parameters, type inference and `.this` results in crash

Open fridis opened this issue 1 year ago • 0 comments

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.

fridis avatar Aug 16 '24 08:08 fridis