Skip to content

Commit 21be611

Browse files
committed
Refine handling of pattern binders for large tuples
1 parent 55c2002 commit 21be611

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

compiler/src/dotty/tools/dotc/typer/Typer.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2434,7 +2434,13 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
24342434
// wrt to operand order for `&`, we include the explicit subtype test here.
24352435
// See also #5649.
24362436
then body1.tpe
2437-
else pt & body1.tpe
2437+
else body1.tpe match
2438+
case btpe: TypeRef
2439+
if btpe.symbol == defn.TupleXXLClass && pt.tupleElementTypes.isDefined =>
2440+
// leave the original tuple type; don't mix with & TupleXXL which would only obscure things
2441+
pt
2442+
case _ =>
2443+
pt & body1.tpe
24382444
val sym = newPatternBoundSymbol(name, symTp, tree.span)
24392445
if (pt == defn.ImplicitScrutineeTypeRef || tree.mods.is(Given)) sym.setFlag(Given)
24402446
if (ctx.mode.is(Mode.InPatternAlternative))

0 commit comments

Comments
 (0)