Skip to content

AssertionError: no TypeBounds allowed, on wildcard (?) in extends clause #22518

Closed
@TomasMikula

Description

@TomasMikula

Compiler version

3.6.3

Worked in 3.5.2, so this is a regression.

Minimized code

sealed trait Foo[T]
class Bar extends Foo[?]

def mkFoo[T]: Foo[T] =
  ???

def test: Unit =
  mkFoo match
    case _ => ()

Output (click arrow to expand)

% ~/Downloads/scala3-3.6.3-aarch64-apple-darwin/bin/scalac test.scala               

  unhandled exception while running MegaPhase{protectedAccessors, extmethods, uncacheGivenAliases, checkStatic, elimByName, hoistSuperArgs, forwardDepChecks, specializeApplyMethods, tryCatchPatterns, patternMatcher} on test.scala

  An unhandled exception was thrown in the compiler.
  Please file a crash report here:
  https://github.com/scala/scala3/issues/new/choose
  For non-enriched exceptions, compile with -Xno-enrich-error-messages.


     while compiling: test.scala
        during phase: MegaPhase{protectedAccessors, extmethods, uncacheGivenAliases, checkStatic, elimByName, hoistSuperArgs, forwardDepChecks, specializeApplyMethods, tryCatchPatterns, patternMatcher}
                mode: Mode(ImplicitsEnabled)
     library version: version 2.13.15
    compiler version: version 3.6.3
            settings: 

Exception in thread "main" java.lang.AssertionError: no TypeBounds allowed
	at dotty.tools.dotc.core.TypeApplications$.noBounds(TypeApplications.scala:22)
	at dotty.tools.dotc.core.TypeApplications$.argTypes$extension$$anonfun$1(TypeApplications.scala:557)
	at scala.collection.immutable.List.mapConserve(List.scala:473)
	at dotty.tools.dotc.core.TypeApplications$.argTypes$extension(TypeApplications.scala:557)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.getTypeArgs$1(Space.scala:677)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.getChildren$1$$anonfun$1(Space.scala:689)
	at scala.collection.immutable.List.flatMap(List.scala:294)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.getChildren$1(Space.scala:682)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.rec$1(Space.scala:695)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.decompose(Space.scala:715)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$Parts$.unapply(Space.scala:733)
	at dotty.tools.dotc.transform.patmat.Typ.decompose(Space.scala:101)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.decompose(Space.scala:118)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.computeSimplify(Space.scala:134)
	at dotty.tools.dotc.transform.patmat.Space.simplify(Space.scala:70)
	at dotty.tools.dotc.transform.patmat.Space.simplify$(Space.scala:52)
	at dotty.tools.dotc.transform.patmat.Typ.simplify(Space.scala:92)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.simplify(Space.scala:115)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.$anonfun$3(Space.scala:129)
	at scala.collection.immutable.List.map(List.scala:247)
	at scala.collection.immutable.List.map(List.scala:79)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.computeSimplify(Space.scala:129)
	at dotty.tools.dotc.transform.patmat.Space.simplify(Space.scala:70)
	at dotty.tools.dotc.transform.patmat.Space.simplify$(Space.scala:52)
	at dotty.tools.dotc.transform.patmat.Or.simplify(Space.scala:112)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.simplify(Space.scala:115)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.$anonfun$3(Space.scala:129)
	at scala.collection.immutable.List.map(List.scala:247)
	at scala.collection.immutable.List.map(List.scala:79)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.computeSimplify(Space.scala:129)
	at dotty.tools.dotc.transform.patmat.Space.simplify(Space.scala:70)
	at dotty.tools.dotc.transform.patmat.Space.simplify$(Space.scala:52)
	at dotty.tools.dotc.transform.patmat.Or.simplify(Space.scala:112)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.simplify(Space.scala:115)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.recur$1(Space.scala:943)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.checkReachability(Space.scala:971)
	at dotty.tools.dotc.transform.patmat.SpaceEngine$.checkMatch(Space.scala:976)
	at dotty.tools.dotc.transform.PatternMatcher.transformMatch(PatternMatcher.scala:52)
	at dotty.tools.dotc.transform.MegaPhase.goMatch(MegaPhase.scala:816)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:383)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:265)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:268)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
	at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:376)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
	at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
	at dotty.tools.dotc.transform.MegaPhase.mapPackage$1(MegaPhase.scala:396)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:399)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnit(MegaPhase.scala:481)
	at dotty.tools.dotc.transform.MegaPhase.run(MegaPhase.scala:493)
	at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:380)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:334)
	at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:373)
	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:343)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
	at dotty.tools.dotc.Run.runPhases$1(Run.scala:336)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:383)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:395)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:395)
	at dotty.tools.dotc.Run.compileSources(Run.scala:282)
	at dotty.tools.dotc.Run.compile(Run.scala:267)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
	at dotty.tools.dotc.Driver.process(Driver.scala:201)
	at dotty.tools.dotc.Driver.process(Driver.scala:169)
	at dotty.tools.dotc.Driver.process(Driver.scala:181)
	at dotty.tools.dotc.Driver.main(Driver.scala:211)
	at dotty.tools.MainGenericCompiler$.run$1(MainGenericCompiler.scala:162)
	at dotty.tools.MainGenericCompiler$.main(MainGenericCompiler.scala:186)
	at dotty.tools.MainGenericCompiler.main(MainGenericCompiler.scala)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions