Skip to content

Commit 4f51005

Browse files
committed
Use TreeTypeMap to change owners at tree transformation time
1 parent 3e61b01 commit 4f51005

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

compiler/src/dotty/tools/dotc/core/quoted/PickledQuotes.scala

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dotty.tools.dotc.core.quoted
22

33
import dotty.tools.dotc.ast.Trees._
4-
import dotty.tools.dotc.ast.tpd
4+
import dotty.tools.dotc.ast.{TreeTypeMap, tpd}
55
import dotty.tools.dotc.config.Printers._
66
import dotty.tools.dotc.core.Constants.Constant
77
import dotty.tools.dotc.core.Contexts._
@@ -137,13 +137,12 @@ object PickledQuotes {
137137
def x1Ref() = ref(x1.symbol)
138138
def rec(f: Tree): Tree = f match {
139139
case closureDef(ddef) =>
140-
new TreeMap() {
141-
private val paramSym = ddef.vparamss.head.head.symbol
142-
override def transform(tree: tpd.Tree)(implicit ctx: Context): tpd.Tree = tree match {
143-
case tree: Ident if tree.symbol == paramSym => x1Ref().withPos(tree.pos)
144-
case _ => super.transform(tree)
145-
}
146-
}.transform(ddef.rhs).changeOwner(ddef.symbol, ctx.owner)
140+
val paramSym = ddef.vparamss.head.head.symbol
141+
new TreeTypeMap(
142+
oldOwners = ddef.symbol :: Nil,
143+
newOwners = ctx.owner :: Nil,
144+
treeMap = tree => if (tree.symbol == paramSym) x1Ref().withPos(tree.pos) else tree
145+
).transform(ddef.rhs)
147146
case Block(stats, expr) =>
148147
val applied = rec(expr)
149148
if (stats.isEmpty) applied

0 commit comments

Comments
 (0)