Skip to content

crash when fetch Mirror of union of invariant class #14823

Closed
@bishabosha

Description

@bishabosha

Compiler version

3.1.2-RC3

Minimized code

sealed abstract class Foo[T]
object Foo {
  case class A[T]() extends Foo[T]
}

def foo = summon[deriving.Mirror.Of[Foo[String] | Foo[String]]]

Output (click arrow to expand)

Exception in thread "main" scala.MatchError: OrType(AppliedType(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <empty>)),object rs$line$2),class Foo),List(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class scala)),object Predef),type String))),AppliedType(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <empty>)),object rs$line$2),class Foo),List(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class scala)),object Predef),type String)))) (of class dotty.tools.dotc.core.Types$CachedOrType)
	at dotty.tools.dotc.transform.TypeUtils$.companionRef(TypeUtils.scala:91)
	at dotty.tools.dotc.typer.Synthesizer.companionPath(Synthesizer.scala:208)
	at dotty.tools.dotc.typer.Synthesizer.sumMirror(Synthesizer.scala:327)
	at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$6$$anonfun$1$$anonfun$1$$anonfun$1(Synthesizer.scala:352)
	at dotty.tools.dotc.typer.Synthesizer.makeMirror(Synthesizer.scala:338)
	at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$6$$anonfun$1(Synthesizer.scala:352)
	at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$7$$anonfun$1(Synthesizer.scala:365)
	at dotty.tools.dotc.typer.Synthesizer.recur$1(Synthesizer.scala:505)
	at dotty.tools.dotc.typer.Synthesizer.tryAll(Synthesizer.scala:510)
	at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:863)
	at dotty.tools.dotc.typer.Implicits.inferImplicitArg$(Implicits.scala:791)
	at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:119)
	at dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:3428)
	at dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:3464)
	at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:3544)
	at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3742)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3976)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3306)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2937)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2941)
	at dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3057)
	at dotty.tools.dotc.typer.Namer.typedAheadExpr$$anonfun$1(Namer.scala:1473)
	at dotty.tools.dotc.typer.Namer.typedAhead(Namer.scala:1463)
	at dotty.tools.dotc.typer.Namer.typedAheadExpr(Namer.scala:1473)
	at dotty.tools.dotc.typer.Namer.typedAheadRhs$1$$anonfun$1(Namer.scala:1710)
	at dotty.tools.dotc.typer.PrepareInlineable$.dropInlineIfError(PrepareInlineable.scala:238)
	at dotty.tools.dotc.typer.Namer.typedAheadRhs$1(Namer.scala:1710)
	at dotty.tools.dotc.typer.Namer.rhsType$1(Namer.scala:1718)
	at dotty.tools.dotc.typer.Namer.cookedRhsType$1(Namer.scala:1736)
	at dotty.tools.dotc.typer.Namer.lhsType$1(Namer.scala:1737)
	at dotty.tools.dotc.typer.Namer.inferredResultType(Namer.scala:1748)
	at dotty.tools.dotc.typer.Namer.inferredType$1(Namer.scala:1512)
	at dotty.tools.dotc.typer.Namer.valOrDefDefSig(Namer.scala:1519)
	at dotty.tools.dotc.typer.Namer$Completer.typeSig(Namer.scala:778)
	at dotty.tools.dotc.typer.Namer$Completer.completeInCreationContext(Namer.scala:914)
	at dotty.tools.dotc.typer.Namer$Completer.complete(Namer.scala:806)
	at dotty.tools.dotc.core.SymDenotations$SymDenotation.completeFrom(SymDenotations.scala:168)
	at dotty.tools.dotc.core.Denotations$Denotation.completeInfo$1(Denotations.scala:188)
	at dotty.tools.dotc.core.Denotations$Denotation.info(Denotations.scala:190)
	at dotty.tools.dotc.core.SymDenotations$SymDenotation.ensureCompleted(SymDenotations.scala:370)
	at dotty.tools.dotc.typer.Typer.retrieveSym(Typer.scala:2751)
	at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2776)
	at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2871)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2937)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2941)
	at dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2963)
	at dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3013)
	at dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2454)
	at dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:2797)
	at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2801)
	at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2871)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2937)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2941)
	at dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2963)
	at dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3013)
	at dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:2581)
	at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2842)
	at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2872)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2937)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2941)
	at dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3057)
	at dotty.tools.dotc.typer.TyperPhase.typeCheck$$anonfun$1(TyperPhase.scala:47)
	at dotty.tools.dotc.core.Phases$Phase.monitor(Phases.scala:411)
	at dotty.tools.dotc.typer.TyperPhase.typeCheck(TyperPhase.scala:54)
	at dotty.tools.dotc.typer.TyperPhase.runOn$$anonfun$3(TyperPhase.scala:88)
	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:333)
	at dotty.tools.dotc.typer.TyperPhase.runOn(TyperPhase.scala:88)
	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:259)
	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:1328)
	at dotty.tools.dotc.Run.runPhases$1(Run.scala:270)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:278)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:287)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:226)
	at dotty.tools.repl.ReplCompiler.runCompilationUnit(ReplCompiler.scala:167)
	at dotty.tools.repl.ReplCompiler.compile(ReplCompiler.scala:178)
	at dotty.tools.repl.ReplDriver.compile(ReplDriver.scala:262)
	at dotty.tools.repl.ReplDriver.interpret(ReplDriver.scala:230)
	at dotty.tools.repl.ReplDriver.loop$1(ReplDriver.scala:162)
	at dotty.tools.repl.ReplDriver.runUntilQuit$$anonfun$1(ReplDriver.scala:165)
	at dotty.tools.repl.ReplDriver.withRedirectedOutput(ReplDriver.scala:186)
	at dotty.tools.repl.ReplDriver.runBody$$anonfun$1(ReplDriver.scala:174)
	at dotty.tools.runner.ScalaClassLoader$.asContext(ScalaClassLoader.scala:80)
	at dotty.tools.repl.ReplDriver.runBody(ReplDriver.scala:174)
	at dotty.tools.repl.ReplDriver.runUntilQuit(ReplDriver.scala:165)
	at dotty.tools.repl.ReplDriver.tryRunning(ReplDriver.scala:127)
	at dotty.tools.repl.Main$.main(Main.scala:6)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions