fuzion icon indicating copy to clipboard operation
fuzion copied to clipboard

Ignoring `this` result type in type feature results in check failure

Open fridis opened this issue 1 year ago • 0 comments

Use this code

e is

  type.p e.this => do

  type.b unit =>
    p
    unit

to get

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

error 1: java.lang.Error: check-condition failed: ResolvedParametricType.java:122 "(Errors.any());"
	at dev.flang.util.ANY.check(ANY.java:440)
	at dev.flang.ast.ResolvedParametricType.feature(ResolvedParametricType.java:122)
	at dev.flang.ast.AstErrors.unusedResult(AstErrors.java:2203)
	at dev.flang.ast.Block.lambda$checkTypes$0(Block.java:413)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.base/java.util.stream.SliceOps$1$1.accept(SliceOps.java:200)
	at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1685)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at dev.flang.ast.Block.checkTypes(Block.java:406)
	at dev.flang.ast.Feature$7.actionBefore(Feature.java:1941)
	at dev.flang.ast.Block.visit(Block.java:206)
	at dev.flang.ast.Block.visit(Block.java:41)
	at dev.flang.ast.Impl.visit(Impl.java:301)
	at dev.flang.ast.Feature.visit(Feature.java:1126)
	at dev.flang.ast.Feature.checkTypes1and2(Feature.java:1930)
	at dev.flang.ast.Resolution.resolveOne(Resolution.java:473)
	at dev.flang.ast.Resolution.resolve(Resolution.java:409)
	at dev.flang.fe.SourceModule.createASTandResolve(SourceModule.java:274)
	at dev.flang.fe.FrontEnd.<init>(FrontEnd.java:195)
	at dev.flang.tools.Fuzion.lambda$parseArgsForBackend$4(Fuzion.java:1068)
	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:626)


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

Not using checks, we see **error** in the error output:

 > ./build/bin/fz test_e.fz 

/home/fridi/fuzion/work/test_e.fz:6:5: error 1: Expression produces result of type 'e.this.type (in type feature)' but result is not used.
    p

To solve this, use the result, explicitly ignore the result '_ := <expression>' or change **error** from constructor to routine by replacing'is' by '=>'.

one error.

fridis avatar Sep 11 '24 15:09 fridis