From 0b86c4fad5c9b032be44655bcc3fed6cd923aa83 Mon Sep 17 00:00:00 2001 From: Decel <8268812+Decel@users.noreply.github.com> Date: Thu, 13 Apr 2023 14:12:45 +0200 Subject: [PATCH 1/2] Update TypeComparer.scala --- compiler/src/dotty/tools/dotc/core/TypeComparer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/src/dotty/tools/dotc/core/TypeComparer.scala b/compiler/src/dotty/tools/dotc/core/TypeComparer.scala index 465978d329e6..2e7db9981531 100644 --- a/compiler/src/dotty/tools/dotc/core/TypeComparer.scala +++ b/compiler/src/dotty/tools/dotc/core/TypeComparer.scala @@ -3151,7 +3151,7 @@ class TrackingTypeComparer(initctx: Context) extends TypeComparer(initctx) { case redux => MatchResult.Reduced(redux.simplified) case _ => - MatchResult.Reduced(body) + MatchResult.Reduced(body.simplified) if caseLambda.exists && matches(canWidenAbstract = false) then redux(canApprox = true) From 87c1df6acd6a05b91f53c2fb544c7e44b00088a0 Mon Sep 17 00:00:00 2001 From: Decel <8268812+Decel@users.noreply.github.com> Date: Thu, 13 Apr 2023 14:36:11 +0200 Subject: [PATCH 2/2] Add regression test --- tests/pos/i16596.scala | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 tests/pos/i16596.scala diff --git a/tests/pos/i16596.scala b/tests/pos/i16596.scala new file mode 100644 index 000000000000..36e20d1cf2de --- /dev/null +++ b/tests/pos/i16596.scala @@ -0,0 +1,7 @@ +import scala.compiletime.ops.int + +type Count[N,T] <: Tuple = (N,T) match + case (0,T) => EmptyTuple + case (N,T) => T *: Count[int.-[N, 1], T] + +val a: Count[3, Int] = (1, 2, 3)