fuzion icon indicating copy to clipboard operation
fuzion copied to clipboard

`x.this.type` should report an error if `x` is not an outer feature.

Open fridis opened this issue 2 years ago • 2 comments

see this:

 > cat test_wrong_this.fz
test_wrong_this is
  a is
    say b.this.type

  b is
    say a.this.type

  c : a is
  d : b is
  a
  b
  c
  d
  unit
 > ./build/bin/fz test_wrong_this.fz
Type of 'test_wrong_this'
Type of 'test_wrong_this'
Type of 'test_wrong_this'
Type of 'test_wrong_this'

fridis avatar Jan 23 '23 17:01 fridis

with contracts enabled:

error 1: java.lang.Error: check-condition failed: dev.flang.air.Clazz:findOuter:2172
        at dev.flang.util.ANY.check(ANY.java:423)
        at dev.flang.air.Clazz.findOuter(Clazz.java:2172)
        at dev.flang.air.Clazz.replaceThisType(Clazz.java:666)
        at dev.flang.air.Clazz.lambda$actualGenerics$2(Clazz.java:726)
        at dev.flang.util.List.map(List.java:460)
        at dev.flang.air.Clazz.actualGenerics(Clazz.java:726)
        at dev.flang.air.Clazzes.findClazzes(Clazzes.java:727)
        at dev.flang.air.Clazz$EV.action(Clazz.java:133)
        at dev.flang.ast.Expr.visitExpressions(Expr.java:258)
        at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:101)
        at dev.flang.ast.Box.visitExpressions(Box.java:155)
        at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:95)
        at dev.flang.ast.AbstractBlock.visitExpressions(AbstractBlock.java:99)
        at dev.flang.ast.AbstractFeature.visitExpressions(AbstractFeature.java:1444)
        at dev.flang.air.Clazz.inspectCode(Clazz.java:1504)
        at dev.flang.air.Clazz.findAllClasses(Clazz.java:1551)
        at dev.flang.air.Clazzes.findAllClasses(Clazzes.java:411)
        at dev.flang.fuir.FUIR.<init>(FUIR.java:200)
        at dev.flang.opt.Optimizer.fuir(Optimizer.java:73)
        at dev.flang.tools.Fuzion$Backend.processFrontEnd(Fuzion.java:454)
        at dev.flang.tools.Fuzion.lambda$parseArgsForBackend$3(Fuzion.java:920)
        at dev.flang.tools.Tool.lambda$run$0(Tool.java:140)
        at dev.flang.util.Errors.runAndExit(Errors.java:878)
        at dev.flang.tools.Tool.run(Tool.java:140)
        at dev.flang.tools.Fuzion.main(Fuzion.java:569)

michaellilltokiwa avatar Feb 21 '24 10:02 michaellilltokiwa

Still broken, here is a smaller example:

 > PRECONDITIONS=true POSTCONDITIONS=true ./build//bin/fz -e "say unit.this.type"

error 1: java.lang.Error: check-condition failed: Clazz.java:2181 "(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:2181)

fridis avatar Jul 22 '24 10:07 fridis