-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
area:erasureitype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore
Description
Based on OpenCB failure in typelevel/spotted-leopards
- build logs
Compiler version
Last good release: 3.7.3-RC1-bin-20250726-1148afe-NIGHTLY
First bad release: 3.7.3-RC1-bin-20250728-95b37a7-NIGHTLY
Bisect points to ef84d41 / #21890
Minimized code
trait Apply[F[_]]:
extension [A](fa: F[A])
def map[B](f: A => B): F[B]
def map2[B, Z](fb: F[B])(f: (A, B) => Z): F[Z] = ???
private case class IsMap[T <: Tuple](value: Tuple.Map[T, F])
private inline def tupledGeneric[T <: Tuple](tuple: Tuple.Map[T, F]): F[T] =
inline IsMap(tuple) match
case t: IsMap[h *: EmptyTuple] => t.value.head.map(_ *: EmptyTuple)
case t: IsMap[h *: t] =>
val head = t.value.head
val tail = tupledGeneric(t.value.tail)
head.map2(tail)(_ *: _)
trait Monad[F[_]] extends Apply[F]:
extension [A](fa: F[A]) def flatMap[B](f: A => F[B]): F[B]
extension [A](fa: F[A]) override def map[B](f: A => B): F[B] = ???
opaque type Kleisli[F[_], A, B] = A => F[B]
given [F[_], A](using F: Monad[F]): Monad[[B] =>> Kleisli[F, A, B]] with
extension [B](k: Kleisli[F, A, B])
def flatMap[C](f: B => Kleisli[F, A, C]) = ???
Output
unhandled exception while running MegaPhase{elimErasedValueType, pureStats, vcElideAllocations, etaReduce, arrayApply, elimPolyFunction, tailrec, completeJavaEnums, mixin, lazyVals, memoize, nonLocalReturns, capturedVars} on /Users/wmazur/projects/scala/community-build3/example.scala
An unhandled exception was thrown in the compiler.
Please file a crash report here:
https://github.com/scala/scala3/issues/new/choose
For non-enriched exceptions, compile with -Xno-enrich-error-messages.
while compiling: /Users/wmazur/projects/scala/community-build3/example.scala
during phase: MegaPhase{elimErasedValueType, pureStats, vcElideAllocations, etaReduce, arrayApply, elimPolyFunction, tailrec, completeJavaEnums, mixin, lazyVals, memoize, nonLocalReturns, capturedVars}
mode: Mode(ImplicitsEnabled)
library version: version 2.13.16
compiler version: version 3.7.3-RC1-bin-20250728-95b37a7-NIGHTLY-git-95b37a7
settings: -classpath /Users/wmazur/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.7.3-RC1-bin-20250728-95b37a7-NIGHTLY/scala3-library_3-3.7.3-RC1-bin-20250728-95b37a7-NIGHTLY.jar:/Users/wmazur/.sdkman/candidates/scala/current/maven2/org/scala-lang/scala-library/2.13.16/scala-library-2.13.16.jar -d /Users/wmazur/projects/scala/community-build3/.scala-build/community-build3_8234e07519-990a7af3ef/classes/main -sourceroot /Users/wmazur/projects/scala/community-build3
Exception in thread "main" java.lang.AssertionError: assertion failed
at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:11)
at dotty.tools.dotc.core.Types$MethodType.<init>(Types.scala:4160)
at dotty.tools.dotc.core.Types$CachedMethodType.<init>(Types.scala:4183)
at dotty.tools.dotc.core.Types$MethodTypeCompanion.apply(Types.scala:4263)
at dotty.tools.dotc.core.Types$MethodTypeCompanion.apply(Types.scala:4262)
at dotty.tools.dotc.core.Types$LambdaTypeCompanion.apply(Types.scala:4195)
at dotty.tools.dotc.core.TypeErasure.eraseInfo(TypeErasure.scala:823)
at dotty.tools.dotc.core.TypeErasure$.transformInfo(TypeErasure.scala:277)
at dotty.tools.dotc.transform.Mixin.mkMixinForwarderSym$1(Mixin.scala:334)
at dotty.tools.dotc.transform.Mixin.mixinForwarders$1$$anonfun$2(Mixin.scala:318)
at scala.collection.Iterator$$anon$9.next(Iterator.scala:584)
at scala.collection.immutable.List.prependedAll(List.scala:156)
at scala.collection.immutable.List$.from(List.scala:685)
at scala.collection.immutable.List$.from(List.scala:682)
at scala.collection.IterableOps$WithFilter.map(Iterable.scala:900)
at dotty.tools.dotc.transform.Mixin.mixinForwarders$1(Mixin.scala:315)
at dotty.tools.dotc.transform.Mixin.$anonfun$6(Mixin.scala:354)
at scala.collection.immutable.List.flatMap(List.scala:294)
at dotty.tools.dotc.transform.Mixin.transformTemplate(Mixin.scala:346)
at dotty.tools.dotc.transform.Mixin.transformTemplate(Mixin.scala:196)
at dotty.tools.dotc.transform.MegaPhase.goTemplate(MegaPhase.scala:1071)
at dotty.tools.dotc.transform.MegaPhase.goTemplate(MegaPhase.scala:1072)
at dotty.tools.dotc.transform.MegaPhase.goTemplate(MegaPhase.scala:1072)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:377)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:376)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
at dotty.tools.dotc.transform.MegaPhase.mapPackage$1(MegaPhase.scala:396)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:399)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.transformUnit(MegaPhase.scala:481)
at dotty.tools.dotc.transform.MegaPhase.run(MegaPhase.scala:493)
at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:386)
at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:334)
at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:379)
at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:368)
at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1324)
at dotty.tools.dotc.Run.runPhases$1(Run.scala:361)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:408)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:408)
at scala.Function0.apply$mcV$sp(Function0.scala:42)
at dotty.tools.dotc.Run.showProgress(Run.scala:470)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:408)
at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:420)
at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
at dotty.tools.dotc.Run.compileUnits(Run.scala:420)
at dotty.tools.dotc.Run.compileSources(Run.scala:307)
at dotty.tools.dotc.Run.compile(Run.scala:292)
at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
at dotty.tools.dotc.Driver.process(Driver.scala:201)
at dotty.tools.dotc.Driver.process(Driver.scala:169)
at dotty.tools.dotc.Driver.process(Driver.scala:181)
at dotty.tools.dotc.Driver.main(Driver.scala:211)
at dotty.tools.dotc.Main.main(Main.scala)
Compilation failed
Expectation
Should compile
Metadata
Metadata
Assignees
Labels
area:erasureitype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore