flix
flix copied to clipboard
bug in kinder
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)
More of a kinding error