Skip to content

Commit 1e615a4

Browse files
nicolasstuckiWojciechMazur
authored andcommitted
Optimize SpecializeTuples.transformSelect
[Cherry-picked 22b273f]
1 parent 14f3e03 commit 1e615a4

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

compiler/src/dotty/tools/dotc/transform/SpecializeTuples.scala

+7-8
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,14 @@ class SpecializeTuples extends MiniPhase:
3737
end transformApply
3838

3939
override def transformSelect(tree: Select)(using Context): Tree = tree match
40-
case Select(qual, nme._1) if isAppliedSpecializableTuple(qual.tpe.widenDealias) =>
41-
Select(qual, nme._1.specializedName(qual.tpe.widenDealias.argInfos.slice(0, 1)))
42-
case Select(qual, nme._2) if isAppliedSpecializableTuple(qual.tpe.widenDealias) =>
43-
Select(qual, nme._2.specializedName(qual.tpe.widenDealias.argInfos.slice(1, 2)))
40+
case Select(qual, name @ (nme._1 | nme._2)) =>
41+
qual.tpe.widenDealias match
42+
case AppliedType(tycon, args) if defn.isSpecializableTuple(tycon.classSymbol, args) =>
43+
val argIdx = if name == nme._1 then 0 else 1
44+
Select(qual, name.specializedName(args(argIdx) :: Nil))
45+
case _ =>
46+
tree
4447
case _ => tree
45-
46-
private def isAppliedSpecializableTuple(tp: Type)(using Context) = tp match
47-
case AppliedType(tycon, args) => defn.isSpecializableTuple(tycon.classSymbol, args)
48-
case _ => false
4948
end SpecializeTuples
5049

5150
object SpecializeTuples:

0 commit comments

Comments
 (0)