Skip to content

crash on compilable code: "assertion failed: invalid prefix..." #1650

Closed
@helloqirun

Description

@helloqirun

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>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions