-
Notifications
You must be signed in to change notification settings - Fork 122
Open
Description
steps
Try to compile:
trait TypeBound {
type Min
type Max >: Min
}
object TypeBound {
type Pinpoint = TypeBound { type Max = Min }
}
object HasPoly1 {
trait Poly1[B <: TypeBound] {
type Refined[Sub <: B]
def refine[Sub <: B](sub: Sub): Refined[Sub]
}
object Poly1 {
type Concrete = Poly1[? <: TypeBound.Pinpoint] // can only refine using a concrete type, not a type bound
case class Example1() extends Poly1[TypeBound.Pinpoint] {
case class Refined[Sub <: TypeBound.Pinpoint](sub: Sub) {
final val fn: sub.Max => Seq[sub.Max] = { v =>
Seq(v)
}
}
def refine[Sub <: TypeBound.Pinpoint](sub: Sub): Refined[Sub] = Refined[Sub](sub)
}
}
}
under newest Scala 3.
Cause: java.lang.StackOverflowError
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:377)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.toProjection$1(ProtobufWriters.scala:393)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:449)
at sbt.internal.inc.binary.converters.ProtobufWriters.toTypeAlias$1(ProtobufWriters.scala:553)
at sbt.internal.inc.binary.converters.ProtobufWriters.toClassDefinition(ProtobufWriters.scala:580)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$1(ProtobufWriters.scala:377)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:377)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$3(ProtobufWriters.scala:379)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:379)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.toProjection$1(ProtobufWriters.scala:393)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:449)
at sbt.internal.inc.binary.converters.ProtobufWriters.toTypeAlias$1(ProtobufWriters.scala:553)
at sbt.internal.inc.binary.converters.ProtobufWriters.toClassDefinition(ProtobufWriters.scala:580)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$1(ProtobufWriters.scala:377)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:377)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$3(ProtobufWriters.scala:379)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:379)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.toProjection$1(ProtobufWriters.scala:393)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:449)
at sbt.internal.inc.binary.converters.ProtobufWriters.toTypeAlias$1(ProtobufWriters.scala:553)
at sbt.internal.inc.binary.converters.ProtobufWriters.toClassDefinition(ProtobufWriters.scala:580)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$1(ProtobufWriters.scala:377)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:377)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$3(ProtobufWriters.scala:379)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:379)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.toProjection$1(ProtobufWriters.scala:393)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:449)
at sbt.internal.inc.binary.converters.ProtobufWriters.toTypeAlias$1(ProtobufWriters.scala:553)
at sbt.internal.inc.binary.converters.ProtobufWriters.toClassDefinition(ProtobufWriters.scala:580)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$1(ProtobufWriters.scala:377)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:377)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$3(ProtobufWriters.scala:379)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at sbt.internal.inc.binary.converters.ProtobufWriters.toStructure(ProtobufWriters.scala:379)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:444)
at sbt.internal.inc.binary.converters.ProtobufWriters.toProjection$1(ProtobufWriters.scala:393)
at sbt.internal.inc.binary.converters.ProtobufWriters.toType(ProtobufWriters.scala:449)
at sbt.internal.inc.binary.converters.ProtobufWriters.toTypeAlias$1(ProtobufWriters.scala:553)
at sbt.internal.inc.binary.converters.ProtobufWriters.toClassDefinition(ProtobufWriters.scala:580)
at sbt.internal.inc.binary.converters.ProtobufWriters.$anonfun$toStructure$1(ProtobufWriters.scala:377)
..
problem
Looks like an inifinite loop.
expectation
It should not fail to write analysis
notes
Raised in scala/scala3#22026
Anyone has an idea what can be fixed here? I also checked on sbt 2 and the same issue happened
Metadata
Metadata
Assignees
Labels
No labels