From e1f16ca63446e2b66af392ab4d587703f421e4ec Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Mon, 22 Aug 2022 10:53:21 +0100 Subject: [PATCH] Make MatchResult Showable --- compiler/src/dotty/tools/dotc/core/TypeComparer.scala | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/compiler/src/dotty/tools/dotc/core/TypeComparer.scala b/compiler/src/dotty/tools/dotc/core/TypeComparer.scala index c07fa91ac1a0..441aa20114a2 100644 --- a/compiler/src/dotty/tools/dotc/core/TypeComparer.scala +++ b/compiler/src/dotty/tools/dotc/core/TypeComparer.scala @@ -2907,12 +2907,19 @@ object TypeComparer { } object TrackingTypeComparer: - enum MatchResult: + import printing.*, Texts.* + enum MatchResult extends Showable: case Reduced(tp: Type) case Disjoint case Stuck case NoInstance(fails: List[(Name, TypeBounds)]) + def toText(p: Printer): Text = this match + case Reduced(tp) => "Reduced(" ~ p.toText(tp) ~ ")" + case Disjoint => "Disjoint" + case Stuck => "Stuck" + case NoInstance(fails) => "NoInstance(" ~ Text(fails.map(p.toText(_) ~ p.toText(_)), ", ") ~ ")" + class TrackingTypeComparer(initctx: Context) extends TypeComparer(initctx) { import TrackingTypeComparer.* @@ -2976,7 +2983,7 @@ class TrackingTypeComparer(initctx: Context) extends TypeComparer(initctx) { } /** Match a single case. */ - def matchCase(cas: Type): MatchResult = trace(i"match case $cas vs $scrut", matchTypes) { + def matchCase(cas: Type): MatchResult = trace(i"$scrut match ${MatchTypeTrace.caseText(cas)}", matchTypes, show = true) { val cas1 = cas match { case cas: HKTypeLambda => caseLambda = constrained(cas)