Skip to content

Commit 2d908c7

Browse files
committed
Drop Pair
Drop tree node class 'Pair'. It was used only in imports, where it can easily be replaced by Thicket. The envisaged use for generic pairs is almost sure better modelled by a "Pair" class in Dotty's standard library.
1 parent b2b475d commit 2d908c7

16 files changed

+34
-131
lines changed

src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@ import collection.mutable.ListBuffer
1111
import util.Attachment
1212

1313
object desugar {
14-
15-
/** Are we using the new unboxed pair scheme? */
16-
private final val unboxedPairs = false
17-
1814
import untpd._
1915

2016
/** Tags a .withFilter call generated by desugaring a for expression.
@@ -923,25 +919,15 @@ object desugar {
923919
case Parens(t) =>
924920
t
925921
case Tuple(ts) =>
926-
if (unboxedPairs) {
927-
def PairTypeTree(l: Tree, r: Tree) =
928-
AppliedTypeTree(ref(defn.PairType), l :: r :: Nil)
929-
if (ctx.mode is Mode.Type) ts.reduceRight(PairTypeTree)
930-
else if (ts.isEmpty) unitLiteral
931-
else ts.reduceRight(Pair(_, _))
932-
}
933-
else {
934-
val arity = ts.length
935-
def tupleTypeRef = defn.TupleType(arity)
936-
if (arity > Definitions.MaxTupleArity) {
937-
ctx.error(s"tuple too long (max allowed: ${Definitions.MaxTupleArity})", tree.pos)
938-
unitLiteral
939-
}
940-
else if (arity == 1) ts.head
941-
else if (ctx.mode is Mode.Type) AppliedTypeTree(ref(tupleTypeRef), ts)
942-
else if (arity == 0) unitLiteral
943-
else Apply(ref(tupleTypeRef.classSymbol.companionModule.valRef), ts)
944-
}
922+
val arity = ts.length
923+
def tupleTypeRef = defn.TupleType(arity)
924+
if (arity > Definitions.MaxTupleArity) {
925+
ctx.error(s"tuple too long (max allowed: ${Definitions.MaxTupleArity})", tree.pos)
926+
unitLiteral
927+
} else if (arity == 1) ts.head
928+
else if (ctx.mode is Mode.Type) AppliedTypeTree(ref(tupleTypeRef), ts)
929+
else if (arity == 0) unitLiteral
930+
else Apply(ref(tupleTypeRef.classSymbol.companionModule.valRef), ts)
945931
case WhileDo(cond, body) =>
946932
// { <label> def while$(): Unit = if (cond) { body; while$() } ; while$() }
947933
val call = Apply(Ident(nme.WHILE_PREFIX), Nil)
@@ -1048,9 +1034,6 @@ object desugar {
10481034
add(id, TypeTree())
10491035
case Apply(_, args) =>
10501036
args foreach collect
1051-
case Pair(left, right) =>
1052-
collect(left)
1053-
collect(right)
10541037
case Typed(expr, _) =>
10551038
collect(expr)
10561039
case NamedArg(_, arg) =>

src/dotty/tools/dotc/ast/Trees.scala

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -428,15 +428,6 @@ object Trees {
428428
type ThisTree[-T >: Untyped] = New[T]
429429
}
430430

431-
/** (left, right) */
432-
case class Pair[-T >: Untyped] private[ast] (left: Tree[T], right: Tree[T])
433-
extends TermTree[T] {
434-
type ThisTree[-T >: Untyped] = Pair[T]
435-
override def isTerm = left.isTerm && right.isTerm
436-
override def isType = left.isType && right.isType
437-
override def isPattern = !isTerm && (left.isPattern || left.isTerm) && (right.isPattern || right.isTerm)
438-
}
439-
440431
/** expr : tpt */
441432
case class Typed[-T >: Untyped] private[ast] (expr: Tree[T], tpt: Tree[T])
442433
extends ProxyTree[T] with TermTree[T] {
@@ -694,7 +685,7 @@ object Trees {
694685

695686
/** import expr.selectors
696687
* where a selector is either an untyped `Ident`, `name` or
697-
* an untyped `Pair` `name => rename`
688+
* an untyped thicket consisting of `name` and `rename`.
698689
*/
699690
case class Import[-T >: Untyped] private[ast] (expr: Tree[T], selectors: List[Tree[Untyped]])
700691
extends DenotingTree[T] {
@@ -836,7 +827,6 @@ object Trees {
836827
type TypeApply = Trees.TypeApply[T]
837828
type Literal = Trees.Literal[T]
838829
type New = Trees.New[T]
839-
type Pair = Trees.Pair[T]
840830
type Typed = Trees.Typed[T]
841831
type NamedArg = Trees.NamedArg[T]
842832
type Assign = Trees.Assign[T]
@@ -955,10 +945,6 @@ object Trees {
955945
case tree: New if tpt eq tree.tpt => tree
956946
case _ => finalize(tree, untpd.New(tpt))
957947
}
958-
def Pair(tree: Tree)(left: Tree, right: Tree)(implicit ctx: Context): Pair = tree match {
959-
case tree: Pair if (left eq tree.left) && (right eq tree.right) => tree
960-
case _ => finalize(tree, untpd.Pair(left, right))
961-
}
962948
def Typed(tree: Tree)(expr: Tree, tpt: Tree)(implicit ctx: Context): Typed = tree match {
963949
case tree: Typed if (expr eq tree.expr) && (tpt eq tree.tpt) => tree
964950
case _ => finalize(tree, untpd.Typed(expr, tpt))
@@ -1132,8 +1118,6 @@ object Trees {
11321118
tree
11331119
case New(tpt) =>
11341120
cpy.New(tree)(transform(tpt))
1135-
case Pair(left, right) =>
1136-
cpy.Pair(tree)(transform(left), transform(right))
11371121
case Typed(expr, tpt) =>
11381122
cpy.Typed(tree)(transform(expr), transform(tpt))
11391123
case NamedArg(name, arg) =>
@@ -1238,8 +1222,6 @@ object Trees {
12381222
x
12391223
case New(tpt) =>
12401224
this(x, tpt)
1241-
case Pair(left, right) =>
1242-
this(this(x, left), right)
12431225
case Typed(expr, tpt) =>
12441226
this(this(x, expr), tpt)
12451227
case NamedArg(name, arg) =>

src/dotty/tools/dotc/ast/tpd.scala

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,6 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
5959

6060
def New(tp: Type)(implicit ctx: Context): New = New(TypeTree(tp))
6161

62-
def Pair(left: Tree, right: Tree)(implicit ctx: Context): Pair =
63-
ta.assignType(untpd.Pair(left, right), left, right)
64-
6562
def Typed(expr: Tree, tpt: Tree)(implicit ctx: Context): Typed =
6663
ta.assignType(untpd.Typed(expr, tpt), tpt)
6764

@@ -493,14 +490,6 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
493490
override def New(tree: Tree)(tpt: Tree)(implicit ctx: Context): New =
494491
ta.assignType(untpd.cpy.New(tree)(tpt), tpt)
495492

496-
override def Pair(tree: Tree)(left: Tree, right: Tree)(implicit ctx: Context): Pair = {
497-
val tree1 = untpd.cpy.Pair(tree)(left, right)
498-
tree match {
499-
case tree: Pair if (left.tpe eq tree.left.tpe) && (right.tpe eq tree.right.tpe) => tree1.withTypeUnchecked(tree.tpe)
500-
case _ => ta.assignType(tree1, left, right)
501-
}
502-
}
503-
504493
override def Typed(tree: Tree)(expr: Tree, tpt: Tree)(implicit ctx: Context): Typed =
505494
ta.assignType(untpd.cpy.Typed(tree)(expr, tpt), tpt)
506495

src/dotty/tools/dotc/ast/untpd.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
139139
def TypeApply(fun: Tree, args: List[Tree]): TypeApply = new TypeApply(fun, args)
140140
def Literal(const: Constant): Literal = new Literal(const)
141141
def New(tpt: Tree): New = new New(tpt)
142-
def Pair(left: Tree, right: Tree): Pair = new Pair(left, right)
143142
def Typed(expr: Tree, tpt: Tree): Typed = new Typed(expr, tpt)
144143
def NamedArg(name: Name, arg: Tree): NamedArg = new NamedArg(name, arg)
145144
def Assign(lhs: Tree, rhs: Tree): Assign = new Assign(lhs, rhs)

src/dotty/tools/dotc/core/tasty/TastyFormat.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ Standard-Section: "ASTs" TopLevelStat*
7474
SELECT possiblySigned_NameRef qual_Term
7575
NEW cls_Type
7676
SUPER Length this_Term mixinTrait_Type?
77-
PAIR Length left_Term right_Term
7877
TYPED Length expr_Term ascription_Type
7978
NAMEDARG Length paramName_NameRef arg_Term
8079
ASSIGN Length lhs_Term rhs_Term
@@ -300,7 +299,8 @@ object TastyFormat {
300299
final val RENAMED = 138
301300
final val APPLY = 139
302301
final val TYPEAPPLY = 140
303-
final val PAIR = 142
302+
303+
304304
final val TYPED = 143
305305
final val NAMEDARG = 144
306306
final val ASSIGN = 145
@@ -452,7 +452,6 @@ object TastyFormat {
452452
case APPLY => "APPLY"
453453
case TYPEAPPLY => "TYPEAPPLY"
454454
case NEW => "NEW"
455-
case PAIR => "PAIR"
456455
case TYPED => "TYPED"
457456
case NAMEDARG => "NAMEDARG"
458457
case ASSIGN => "ASSIGN"

src/dotty/tools/dotc/core/tasty/TreePickler.scala

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -392,9 +392,6 @@ class TreePickler(pickler: TastyPickler) {
392392
case New(tpt) =>
393393
writeByte(NEW)
394394
pickleTpt(tpt)
395-
case Pair(left, right) =>
396-
writeByte(PAIR)
397-
withLength { pickleTree(left); pickleTree(right) }
398395
case Typed(expr, tpt) =>
399396
writeByte(TYPED)
400397
withLength { pickleTree(expr); pickleTpt(tpt) }
@@ -496,7 +493,7 @@ class TreePickler(pickler: TastyPickler) {
496493
withLength {
497494
pickleTree(expr)
498495
selectors foreach {
499-
case Pair(Ident(from), Ident(to)) =>
496+
case Thicket(Ident(from) :: Ident(to) :: Nil) =>
500497
writeByte(RENAMED)
501498
withLength { pickleName(from); pickleName(to) }
502499
case Ident(name) =>

src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -831,7 +831,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
831831
case RENAMED =>
832832
readByte()
833833
readEnd()
834-
untpd.Pair(untpd.Ident(readName()), untpd.Ident(readName())) :: readSelectors()
834+
untpd.Thicket(untpd.Ident(readName()), untpd.Ident(readName())) :: readSelectors()
835835
case IMPORTED =>
836836
readByte()
837837
untpd.Ident(readName()) :: readSelectors()
@@ -915,8 +915,6 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
915915
tpd.Apply(fn, until(end)(readArg()))
916916
case TYPEAPPLY =>
917917
tpd.TypeApply(readTerm(), until(end)(readTpt()))
918-
case PAIR =>
919-
Pair(readTerm(), readTerm())
920918
case TYPED =>
921919
val expr = readTerm()
922920
val tpt = readTpt()

src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,7 @@ class Scala2Unpickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClas
10441044
val toName = readNameRef()
10451045
val from = untpd.Ident(fromName)
10461046
val to = untpd.Ident(toName)
1047-
if (toName.isEmpty) from else untpd.Pair(from, untpd.Ident(toName))
1047+
if (toName.isEmpty) from else untpd.Thicket(from, untpd.Ident(toName))
10481048
})
10491049

10501050
Import(expr, selectors)

src/dotty/tools/dotc/parsing/Parsers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1786,7 +1786,7 @@ object Parsers {
17861786
val from = termIdentOrWildcard()
17871787
if (from.name != nme.WILDCARD && in.token == ARROW)
17881788
atPos(from.pos.start, in.skipToken()) {
1789-
Pair(from, termIdentOrWildcard())
1789+
Thicket(from, termIdentOrWildcard())
17901790
}
17911791
else from
17921792
}

src/dotty/tools/dotc/printing/RefinedPrinter.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,6 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
311311
toTextLocal(tpt)
312312
}
313313
}
314-
case Pair(l, r) =>
315-
"(" ~ toTextGlobal(l) ~ ", " ~ toTextGlobal(r) ~ ")"
316314
case Typed(expr, tpt) =>
317315
changePrec(InfixPrec) { toText(expr) ~ ": " ~ toText(tpt) }
318316
case NamedArg(name, arg) =>
@@ -416,7 +414,7 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
416414
}
417415
case Import(expr, selectors) =>
418416
def selectorText(sel: Tree): Text = sel match {
419-
case Pair(l, r) => toTextGlobal(l) ~ " => " ~ toTextGlobal(r)
417+
case Thicket(l :: r :: Nil) => toTextGlobal(l) ~ " => " ~ toTextGlobal(r)
420418
case _ => toTextGlobal(sel)
421419
}
422420
val selectorsText: Text = selectors match {

src/dotty/tools/dotc/sbt/ExtractDependencies.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ private class ExtractDependenciesCollector(implicit val ctx: Context) extends tp
184184
selectors foreach {
185185
case Ident(name) =>
186186
addImported(name)
187-
case Pair(Ident(name), Ident(rename)) =>
187+
case Thicket(Ident(name) :: Ident(rename) :: Nil) =>
188188
addImported(name)
189189
if (rename ne nme.WILDCARD)
190190
addUsedName(rename)

src/dotty/tools/dotc/transform/TreeChecker.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,6 @@ class TreeChecker extends Phase with SymTransformer {
213213
// case tree: untpd.This =>
214214
// case tree: untpd.Literal =>
215215
// case tree: untpd.New =>
216-
case Pair(left, right) =>
217-
assertIdentNotJavaClass(left)
218-
assertIdentNotJavaClass(right)
219216
case Typed(expr, _) =>
220217
assertIdentNotJavaClass(expr)
221218
case NamedArg(_, arg) =>

src/dotty/tools/dotc/transform/TreeTransform.scala

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ object TreeTransforms {
7070
def prepareForApply(tree: Apply)(implicit ctx: Context) = this
7171
def prepareForTypeApply(tree: TypeApply)(implicit ctx: Context) = this
7272
def prepareForLiteral(tree: Literal)(implicit ctx: Context) = this
73-
def prepareForPair(tree: Pair)(implicit ctx: Context) = this
7473
def prepareForNew(tree: New)(implicit ctx: Context) = this
7574
def prepareForTyped(tree: Typed)(implicit ctx: Context) = this
7675
def prepareForAssign(tree: Assign)(implicit ctx: Context) = this
@@ -104,7 +103,6 @@ object TreeTransforms {
104103
def transformTypeApply(tree: TypeApply)(implicit ctx: Context, info: TransformerInfo): Tree = tree
105104
def transformLiteral(tree: Literal)(implicit ctx: Context, info: TransformerInfo): Tree = tree
106105
def transformNew(tree: New)(implicit ctx: Context, info: TransformerInfo): Tree = tree
107-
def transformPair(tree: Pair)(implicit ctx: Context, info: TransformerInfo): Tree = tree
108106
def transformTyped(tree: Typed)(implicit ctx: Context, info: TransformerInfo): Tree = tree
109107
def transformAssign(tree: Assign)(implicit ctx: Context, info: TransformerInfo): Tree = tree
110108
def transformBlock(tree: Block)(implicit ctx: Context, info: TransformerInfo): Tree = tree
@@ -267,7 +265,6 @@ object TreeTransforms {
267265
nxPrepTypeApply = index(transformations, "prepareForTypeApply")
268266
nxPrepLiteral = index(transformations, "prepareForLiteral")
269267
nxPrepNew = index(transformations, "prepareForNew")
270-
nxPrepPair = index(transformations, "prepareForPair")
271268
nxPrepTyped = index(transformations, "prepareForTyped")
272269
nxPrepAssign = index(transformations, "prepareForAssign")
273270
nxPrepBlock = index(transformations, "prepareForBlock")
@@ -299,7 +296,6 @@ object TreeTransforms {
299296
nxTransTypeApply = index(transformations, "transformTypeApply")
300297
nxTransLiteral = index(transformations, "transformLiteral")
301298
nxTransNew = index(transformations, "transformNew")
302-
nxTransPair = index(transformations, "transformPair")
303299
nxTransTyped = index(transformations, "transformTyped")
304300
nxTransAssign = index(transformations, "transformAssign")
305301
nxTransBlock = index(transformations, "transformBlock")
@@ -341,7 +337,6 @@ object TreeTransforms {
341337
nxPrepTypeApply = indexUpdate(prev.nxPrepTypeApply, changedTransformationClass, transformationIndex, "prepareForTypeApply", copy)
342338
nxPrepLiteral = indexUpdate(prev.nxPrepLiteral, changedTransformationClass, transformationIndex, "prepareForLiteral", copy)
343339
nxPrepNew = indexUpdate(prev.nxPrepNew, changedTransformationClass, transformationIndex, "prepareForNew", copy)
344-
nxPrepPair = indexUpdate(prev.nxPrepPair, changedTransformationClass, transformationIndex, "prepareForPair", copy)
345340
nxPrepTyped = indexUpdate(prev.nxPrepTyped, changedTransformationClass, transformationIndex, "prepareForTyped", copy)
346341
nxPrepAssign = indexUpdate(prev.nxPrepAssign, changedTransformationClass, transformationIndex, "prepareForAssign", copy)
347342
nxPrepBlock = indexUpdate(prev.nxPrepBlock, changedTransformationClass, transformationIndex, "prepareForBlock", copy)
@@ -372,7 +367,6 @@ object TreeTransforms {
372367
nxTransTypeApply = indexUpdate(prev.nxTransTypeApply, changedTransformationClass, transformationIndex, "transformTypeApply", copy)
373368
nxTransLiteral = indexUpdate(prev.nxTransLiteral, changedTransformationClass, transformationIndex, "transformLiteral", copy)
374369
nxTransNew = indexUpdate(prev.nxTransNew, changedTransformationClass, transformationIndex, "transformNew", copy)
375-
nxTransPair = indexUpdate(prev.nxTransPair, changedTransformationClass, transformationIndex, "transformPair", copy)
376370
nxTransTyped = indexUpdate(prev.nxTransTyped, changedTransformationClass, transformationIndex, "transformTyped", copy)
377371
nxTransAssign = indexUpdate(prev.nxTransAssign, changedTransformationClass, transformationIndex, "transformAssign", copy)
378372
nxTransBlock = indexUpdate(prev.nxTransBlock, changedTransformationClass, transformationIndex, "transformBlock", copy)
@@ -409,7 +403,6 @@ object TreeTransforms {
409403
var nxPrepTypeApply: Array[Int] = _
410404
var nxPrepLiteral: Array[Int] = _
411405
var nxPrepNew: Array[Int] = _
412-
var nxPrepPair: Array[Int] = _
413406
var nxPrepTyped: Array[Int] = _
414407
var nxPrepAssign: Array[Int] = _
415408
var nxPrepBlock: Array[Int] = _
@@ -441,7 +434,6 @@ object TreeTransforms {
441434
var nxTransTypeApply: Array[Int] = _
442435
var nxTransLiteral: Array[Int] = _
443436
var nxTransNew: Array[Int] = _
444-
var nxTransPair: Array[Int] = _
445437
var nxTransTyped: Array[Int] = _
446438
var nxTransAssign: Array[Int] = _
447439
var nxTransBlock: Array[Int] = _
@@ -520,7 +512,6 @@ object TreeTransforms {
520512
val prepForApply: Mutator[Apply] = (trans, tree, ctx) => trans.prepareForApply(tree)(ctx)
521513
val prepForTypeApply: Mutator[TypeApply] = (trans, tree, ctx) => trans.prepareForTypeApply(tree)(ctx)
522514
val prepForNew: Mutator[New] = (trans, tree, ctx) => trans.prepareForNew(tree)(ctx)
523-
val prepForPair: Mutator[Pair] = (trans, tree, ctx) => trans.prepareForPair(tree)(ctx)
524515
val prepForTyped: Mutator[Typed] = (trans, tree, ctx) => trans.prepareForTyped(tree)(ctx)
525516
val prepForAssign: Mutator[Assign] = (trans, tree, ctx) => trans.prepareForAssign(tree)(ctx)
526517
val prepForLiteral: Mutator[Literal] = (trans, tree, ctx) => trans.prepareForLiteral(tree)(ctx)
@@ -637,17 +628,6 @@ object TreeTransforms {
637628
} else tree
638629
}
639630

640-
@tailrec
641-
final private[TreeTransforms] def goPair(tree: Pair, cur: Int)(implicit ctx: Context, info: TransformerInfo): Tree = {
642-
if (cur < info.transformers.length) {
643-
val trans = info.transformers(cur)
644-
trans.transformPair(tree)(ctx.withPhase(trans.treeTransformPhase), info) match {
645-
case t: Pair => goPair(t, info.nx.nxTransPair(cur + 1))
646-
case t => transformSingle(t, cur + 1)
647-
}
648-
} else tree
649-
}
650-
651631
@tailrec
652632
final private[TreeTransforms] def goTyped(tree: Typed, cur: Int)(implicit ctx: Context, info: TransformerInfo): Tree = {
653633
if (cur < info.transformers.length) {
@@ -917,7 +897,6 @@ object TreeTransforms {
917897
case tree: TypeApply => goTypeApply(tree, info.nx.nxTransTypeApply(cur))
918898
case tree: Literal => goLiteral(tree, info.nx.nxTransLiteral(cur))
919899
case tree: New => goNew(tree, info.nx.nxTransNew(cur))
920-
case tree: Pair => goPair(tree, info.nx.nxTransPair(cur))
921900
case tree: Typed => goTyped(tree, info.nx.nxTransTyped(cur))
922901
case tree: Assign => goAssign(tree, info.nx.nxTransAssign(cur))
923902
case tree: Block => goBlock(tree, info.nx.nxTransBlock(cur))
@@ -1052,14 +1031,6 @@ object TreeTransforms {
10521031
val tpt = transform(tree.tpt, mutatedInfo, cur)
10531032
goNew(cpy.New(tree)(tpt), mutatedInfo.nx.nxTransNew(cur))
10541033
}
1055-
case tree: Pair =>
1056-
implicit val mutatedInfo: TransformerInfo = mutateTransformers(info, prepForPair, info.nx.nxPrepPair, tree, cur)
1057-
if (mutatedInfo eq null) tree
1058-
else {
1059-
val left = transform(tree.left, mutatedInfo, cur)
1060-
val right = transform(tree.right, mutatedInfo, cur)
1061-
goPair(cpy.Pair(tree)(left, right), mutatedInfo.nx.nxTransPair(cur))
1062-
}
10631034
case tree: Typed =>
10641035
implicit val mutatedInfo: TransformerInfo = mutateTransformers(info, prepForTyped, info.nx.nxPrepTyped, tree, cur)
10651036
if (mutatedInfo eq null) tree

0 commit comments

Comments
 (0)