Skip to content

crash when summon sum mirror of intersection type #15190

Closed
@bishabosha

Description

@bishabosha

Compiler version

3.1.2

Minimized code

import scala.deriving.Mirror

trait Mixin

sealed trait Fruit extends Mixin
object Fruit {
  case object Apple extends Fruit
  case object Orange extends Fruit
}

@main def Test = {
  summon[Mirror.SumOf[Fruit & Mixin]]
}

Output (click arrow to expand)

Exception in thread "main" scala.MatchError: AndType(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),trait Fruit),TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),trait Mixin)) (of class dotty.tools.dotc.core.Types$CachedAndType) while compiling /Users/jamie/workspace/dotty/local/foo/App.scala
scala.MatchError: AndType(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),trait Fruit),TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),trait Mixin)) (of class dotty.tools.dotc.core.Types$CachedAndType)
	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.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.Typer.typedBlock(Typer.scala:1075)
	at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2817)
	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.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.defDefSig(Namer.scala:1588)
	at dotty.tools.dotc.typer.Namer$Completer.typeSig(Namer.scala:782)
	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.compileSources(Run.scala:220)
	at dotty.tools.dotc.Run.compile(Run.scala:204)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:39)
	at dotty.tools.dotc.Driver.process(Driver.scala:199)
	at dotty.tools.dotc.Driver.process(Driver.scala:167)
	at dotty.tools.dotc.Driver.process(Driver.scala:179)
	at dotty.tools.dotc.Driver.main(Driver.scala:209)
	at dotty.tools.dotc.Main.main(Main.scala)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions