- 
                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