Skip to content

Commit 76c9839

Browse files
committed
migrates UseFields to typingTransform
1 parent 69f3a4d commit 76c9839

File tree

1 file changed

+20
-26
lines changed

1 file changed

+20
-26
lines changed

src/main/scala/scala/async/internal/AsyncTransform.scala

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -152,35 +152,30 @@ trait AsyncTransform {
152152
// fields. Similarly, replace references to them with references to the field.
153153
//
154154
// This transform will only be run on the RHS of `def foo`.
155-
class UseFields extends MacroTypingTransformer {
156-
override def transform(tree: Tree): Tree = tree match {
157-
case _ if currentOwner == stateMachineClass =>
158-
super.transform(tree)
159-
case ValDef(_, _, _, rhs) if liftedSyms(tree.symbol) =>
160-
atOwner(currentOwner) {
161-
val fieldSym = tree.symbol
162-
val set = Assign(gen.mkAttributedStableRef(fieldSym.owner.thisType, fieldSym), transform(rhs))
163-
set.changeOwner(tree.symbol, currentOwner)
164-
localTyper.typedPos(tree.pos)(set)
165-
}
166-
case _: DefTree if liftedSyms(tree.symbol) =>
167-
EmptyTree
168-
case Ident(name) if liftedSyms(tree.symbol) =>
155+
val useFields: (Tree, TypingTransformApi) => Tree = (tree, api) => tree match {
156+
case _ if api.currentOwner == stateMachineClass =>
157+
api.default(tree)
158+
case ValDef(_, _, _, rhs) if liftedSyms(tree.symbol) =>
159+
api.atOwner(api.currentOwner) {
169160
val fieldSym = tree.symbol
170-
atPos(tree.pos) {
171-
gen.mkAttributedStableRef(fieldSym.owner.thisType, fieldSym).setType(tree.tpe)
172-
}
173-
case _ =>
174-
super.transform(tree)
175-
}
161+
val set = Assign(gen.mkAttributedStableRef(fieldSym.owner.thisType, fieldSym), api.recur(rhs))
162+
set.changeOwner(tree.symbol, api.currentOwner)
163+
api.typecheck(atPos(tree.pos)(set))
164+
}
165+
case _: DefTree if liftedSyms(tree.symbol) =>
166+
EmptyTree
167+
case Ident(name) if liftedSyms(tree.symbol) =>
168+
val fieldSym = tree.symbol
169+
atPos(tree.pos) {
170+
gen.mkAttributedStableRef(fieldSym.owner.thisType, fieldSym).setType(tree.tpe)
171+
}
172+
case _ =>
173+
api.default(tree)
176174
}
177175

178176
val liftablesUseFields = liftables.map {
179177
case vd: ValDef => vd
180-
case x =>
181-
val useField = new UseFields()
182-
//.substituteSymbols(fromSyms, toSyms)
183-
useField.atOwner(stateMachineClass)(useField.transform(x))
178+
case x => typingTransform(x, stateMachineClass)(useFields)
184179
}
185180

186181
tree.children.foreach(_.changeOwner(enclosingOwner, tree.symbol))
@@ -189,8 +184,7 @@ trait AsyncTransform {
189184
/* Fixes up DefDef: use lifted fields in `body` */
190185
def fixup(dd: DefDef, body: Tree, api: TypingTransformApi): Tree = {
191186
val spliceeAnfFixedOwnerSyms = body
192-
val useField = new UseFields()
193-
val newRhs = useField.atOwner(dd.symbol)(useField.transform(spliceeAnfFixedOwnerSyms))
187+
val newRhs = typingTransform(spliceeAnfFixedOwnerSyms, dd.symbol)(useFields)
194188
val newRhsTyped = api.atOwner(dd, dd.symbol)(api.typecheck(newRhs))
195189
treeCopy.DefDef(dd, dd.mods, dd.name, dd.tparams, dd.vparamss, dd.tpt, newRhsTyped)
196190
}

0 commit comments

Comments
 (0)