Closed
Description
Minimized code
Scala 3.0.0-M1
object Firsts:
type First[X] = X match
case Map[_, v] => First[Option[v]]
def first[X](x: X): First[X] = x match
case x: Map[_, _] => first(x.values.headOption)
@main
def runFirsts2(): Unit =
assert(first(Map.empty[Int, Int]) == None)
Output (click arrow to expand)
compiler crashes with the following exception.
[error] java.lang.NullPointerException
[error] dotty.tools.dotc.core.NameKinds$UniqueNameKind.fresh(NameKinds.scala:222)
[error] dotty.tools.dotc.typer.ProtoTypes$.newTypeVar(ProtoTypes.scala:560)
[error] dotty.tools.dotc.core.TypeOps$.$anonfun$4(TypeOps.scala:755)
[error] scala.collection.immutable.List.map(List.scala:246)
[error] dotty.tools.dotc.core.TypeOps$.instantiateToSubType(TypeOps.scala:755)
[error] dotty.tools.dotc.core.TypeOps$.refineUsingParent(TypeOps.scala:657)
[error] dotty.tools.dotc.core.TypeComparer.decompose$2$$anonfun$1(TypeComparer.scala:2382)
[error] scala.collection.immutable.List.map(List.scala:250)
[error] dotty.tools.dotc.core.TypeComparer.decompose$1(TypeComparer.scala:2382)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2405)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2475)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2475)
[error] dotty.tools.dotc.core.TrackingTypeComparer.matchCase$1(TypeComparer.scala:2768)
[error] dotty.tools.dotc.core.TrackingTypeComparer.recur$2(TypeComparer.scala:2777)
[error] dotty.tools.dotc.core.TrackingTypeComparer.op$proxy44$1(TypeComparer.scala:2798)
[error] dotty.tools.dotc.core.TrackingTypeComparer.matchCases(TypeComparer.scala:2799)
[error] dotty.tools.dotc.core.Types$MatchType.liftedTree1$2(Types.scala:4402)
[error] dotty.tools.dotc.core.Types$MatchType.matchCases$1(Types.scala:4405)
[error] dotty.tools.dotc.core.Types$MatchType.reduced$$anonfun$1(Types.scala:4406)
[error] dotty.tools.dotc.core.TypeComparer.inSubComparer(TypeComparer.scala:2491)
[error] dotty.tools.dotc.core.TypeComparer.tracked(TypeComparer.scala:2501)
...