Closed
Description
Scalac can compile it. But dotc crashes.
$ cat abc.scala
object Test {
test4(test4$default$1)
def test4[T[P]](x: T[T[List[T[X forSome { type X }]]]]) = ???
def test4$default$1[T[P]]: T[Int] = ???
}
$ dotc abc.scala
-- Error: abc.scala ----------------------------------------------------------------------------------------------------
3 | def test4[T[P]](x: T[T[List[T[X forSome { type X }]]]]) = ???
| ^
| existential types no longer supported; use a wildcard type or dependent type instead
-- [E006] Missing Identifier Error: abc.scala --------------------------------------------------------------------------
3 | def test4[T[P]](x: T[T[List[T[X forSome { type X }]]]]) = ???
| ^
| not found: type X
longer explanation available when compiling with `-explain`
assertion failure for [X0] => scala.collection.mutable.IndexedSeq[X0] <:< scala.collection.generic.GenericTraversableTemplate{A =+ Short}, frozen = false
assertion failure for [X0] => scala.collection.mutable.IndexedSeq[X0] <:< <nonsensical>scala.collection.generic.GenericTraversableTemplate[Short,
scala.collection.immutable.List[
([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0']] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[<error>]
]
]</nonsensical>, frozen = falsewhere: X0 is a type variable
X0' is a type variable
assertion failure for [X0] => scala.collection.mutable.IndexedSeq[X0] <:< <nonsensical>([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0']] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[
scala.collection.immutable.List[
([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0']] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[<error>]
]
]</nonsensical>, frozen = falsewhere: X0 is a type variable
X0' is a type variable
assertion failure for =+ [X0] => scala.collection.mutable.IndexedSeq[X0] <:< <nonsensical> =+
([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0']] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[
scala.collection.immutable.List[
([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0']] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[<error>]
]
]</nonsensical>, frozen = falsewhere: X0 is a type variable
X0' is a type variable
assertion failure for scala.collection.mutable.WrappedArray[Short] <:< <nonsensical>scala.collection.generic.GenericTraversableTemplate[Short,
([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0]] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[
scala.collection.immutable.List[
([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0]] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[<error>]
]
]
]</nonsensical>, frozen = false
assertion failure for scala.collection.mutable.WrappedArray[Short] <:< <nonsensical>T[
([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0]] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[
scala.collection.immutable.List[
([+scala$collection$generic$GenericTraversableTemplate$$CC <: [X0] => scala.collection.GenTraversable[X0]] =>
scala.collection.generic.GenericTraversableTemplate[Short, CC]
)^[<error>]
]
]
]</nonsensical>, frozen = false
assertion failure for scala.collection.mutable.WrappedArray[Short] <:< <nonsensical>T[T[scala.collection.immutable.List[T[<error>]]]]</nonsensical>, frozen = falsewhere: T is a type variable with constraint <: [X0] => Any
exception occurred while typechecking abc.scala
exception occurred while compiling abc.scala
Exception in thread "main" java.lang.AssertionError: assertion failed: invalid prefix PolyType(List(0), List(X0), List(TypeBounds(TypeRef(ThisType(TypeRef(NoPrefix,scala)),Nothing), TypeRef(ThisType(TypeRef(NoPrefix,scala)),Any))), RefinedType(TypeRef(ThisType(TypeRef(NoPrefix,mutable)),IndexedSeq), scala$collection$mutable$IndexedSeq$$A, TypeAlias(PolyParam(X0), 0)))
at scala.Predef$.assert(Predef.scala:165)
at dotty.tools.dotc.core.Types$NamedType.<init>(Types.scala:1375)
at dotty.tools.dotc.core.Types$TypeRef.<init>(Types.scala:1751)
at dotty.tools.dotc.core.Types$CachedTypeRef.<init>(Types.scala:1824)
at dotty.tools.dotc.core.Uniques$NamedTypeUniques.newType$1(Uniques.scala:59)
at dotty.tools.dotc.core.Uniques$NamedTypeUniques.enterIfNew(Uniques.scala:64)
at dotty.tools.dotc.core.Types$TypeRef$.apply(Types.scala:1933)
at dotty.tools.dotc.core.Types$NamedType$.apply(Types.scala:1841)
at dotty.tools.dotc.core.Types$NamedType.newLikeThis(Types.scala:1679)
at dotty.tools.dotc.core.Types$NamedType.derivedSelect(Types.scala:1672)
at dotty.tools.dotc.core.TypeOps$$anonfun$dotty$tools$dotc$core$TypeOps$$asSeenFrom$2.apply(TypeOps.scala:95)
at dotty.tools.dotc.core.TypeOps$$anonfun$dotty$tools$dotc$core$TypeOps$$asSeenFrom$2.apply(TypeOps.scala:82)
at dotty.tools.dotc.reporting.Reporting$class.conditionalTraceIndented(Reporter.scala:128)
at dotty.tools.dotc.core.Contexts$Context.conditionalTraceIndented(Contexts.scala:57)
<snipped>