flix icon indicating copy to clipboard operation
flix copied to clipboard

bug in kinder

Open JonathanStarup opened this issue 1 year ago • 1 comments

Program is nonsense since tr is a record, it should've been tr.reg but it crashes the compiler.

enum Test[r: Region]({reg :: Region[r]})

pub def f(i: Int32, test: Test[r]): Array[String, r] & r = {
        let Test(tr) = test;
        ??? |> List.toArray(Scoped.regionOf(tr))
            |> Array.map(???)
    }
crash report
#
# An unexpected error has been detected by the Flix compiler:
#
#   Unexpected type: '( reg :: Region[b10210322] )'.
#
# This is a bug in the Flix compiler. Please report it here:
#
# https://github.com/flix/flix/issues
#
# -- Flix Compiler --
#
# Flix Version : v0.30.0
#   incremental: All
#
# -- Java Virtual Machine --
#
# JVM Version  : 15.0.2 (2021-01-19)
# JVM Vendor   : Oracle Corporation
# JAVA_HOME    : C:\Program Files\Java\jdk-15.0.2
# System       : Windows 10 (10.0)
#
# -- Stack Trace --
ca.uwaterloo.flix.util.InternalCompilerException: Unexpected type: '( reg :: Region[b10210322] )'.
	at ca.uwaterloo.flix.language.phase.unification.BoolFormula$.fromBoolType(BoolFormula.scala:136)
	at ca.uwaterloo.flix.language.phase.unification.BoolFormula$.fromBoolType(BoolFormula.scala:134)
	at ca.uwaterloo.flix.language.phase.unification.TypeMinimization$.minimizeBoolAlg(TypeMinimization.scala:110)
	at ca.uwaterloo.flix.language.phase.unification.TypeMinimization$.minimizeType(TypeMinimization.scala:38)
	at ca.uwaterloo.flix.language.phase.unification.BoolUnification$.successiveVariableElimination(BoolUnification.scala:140)
	at ca.uwaterloo.flix.language.phase.unification.BoolUnification$.booleanUnification(BoolUnification.scala:85)
	at ca.uwaterloo.flix.language.phase.unification.BoolUnification$.unify(BoolUnification.scala:64)
	at ca.uwaterloo.flix.language.phase.unification.Unification$.$anonfun$unifyBoolM$1(Unification.scala:374)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$1(InferMonad.scala:62)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$map$2(InferMonad.scala:67)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$withFilter$1(InferMonad.scala:104)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$1(InferMonad.scala:79)
	at ca.uwaterloo.flix.util.Result.flatMap(Result.scala:51)
	at ca.uwaterloo.flix.util.Result.flatMap$(Result.scala:50)
	at ca.uwaterloo.flix.util.Result$Ok.flatMap(Result.scala:77)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$2(InferMonad.scala:76)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$flatMap$2(InferMonad.scala:84)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$withFilter$1(InferMonad.scala:104)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.runNext$1(InferMonad.scala:62)
	at ca.uwaterloo.flix.language.phase.unification.InferMonad.$anonfun$map$2(InferMonad.scala:67)
	at ca.uwaterloo.flix.language.phase.Typer$.typeCheckDecl(Typer.scala:271)
	at ca.uwaterloo.flix.language.phase.Typer$.visitDefn(Typer.scala:173)
	at ca.uwaterloo.flix.language.phase.Typer$.$anonfun$visitDefs$2(Typer.scala:229)
	at scala.collection.parallel.mutable.ParArray$Map.leaf(ParArray.scala:664)
	at scala.collection.parallel.Task.$anonfun$tryLeaf$1(Tasks.scala:52)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.control.Breaks$$anon$1.catchBreak(Breaks.scala:97)
	at scala.collection.parallel.Task.tryLeaf(Tasks.scala:55)
	at scala.collection.parallel.Task.tryLeaf$(Tasks.scala:49)
	at scala.collection.parallel.mutable.ParArray$Map.tryLeaf(ParArray.scala:655)
	at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask.internal(Tasks.scala:169)
	at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask.internal$(Tasks.scala:156)
	at scala.collection.parallel.AdaptiveWorkStealingForkJoinTasks$WrappedTask.internal(Tasks.scala:303)
	at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask.compute(Tasks.scala:149)
	at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask.compute$(Tasks.scala:148)
	at scala.collection.parallel.AdaptiveWorkStealingForkJoinTasks$WrappedTask.compute(Tasks.scala:303)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

JonathanStarup avatar Jul 28 '22 00:07 JonathanStarup

More of a kinding error

magnus-madsen avatar Jul 29 '22 14:07 magnus-madsen