@@ -278,20 +278,20 @@ class LambdaLift extends MiniPhaseTransform with IdentityDenotTransformer { this
278
278
}
279
279
}
280
280
281
- override def init (implicit ctx : Context , info : TransformerInfo ) = {
282
- free.clear()
283
- proxyMap .clear()
284
- called .clear()
285
- calledFromInner .clear()
286
- liftedOwner .clear()
287
- liftedDefs .clear()
288
- assert(ctx.phase == thisTransform )
289
- (new CollectDependencies ).traverse(NoSymbol , ctx.compilationUnit.tpdTree)
290
- computeFreeVars()
291
- computeLiftedOwners()
292
- generateProxies()(ctx.withPhase(thisTransform.next))
293
- liftLocals()(ctx.withPhase(thisTransform.next))
294
- }
281
+ override def init (implicit ctx : Context , info : TransformerInfo ) =
282
+ ctx.atPhase(thisTransform) { implicit ctx =>
283
+ free .clear()
284
+ proxyMap .clear()
285
+ called .clear()
286
+ calledFromInner .clear()
287
+ liftedOwner .clear()
288
+ liftedDefs.clear( )
289
+ (new CollectDependencies ).traverse(NoSymbol , ctx.compilationUnit.tpdTree)
290
+ computeFreeVars()
291
+ computeLiftedOwners()
292
+ generateProxies()(ctx.withPhase(thisTransform.next))
293
+ liftLocals()(ctx.withPhase(thisTransform.next))
294
+ }
295
295
296
296
private def currentEnclosure (implicit ctx : Context ) =
297
297
ctx.owner.enclosingMethod.skipConstructor
@@ -355,8 +355,12 @@ class LambdaLift extends MiniPhaseTransform with IdentityDenotTransformer { this
355
355
}
356
356
}
357
357
358
- private def liftDef (tree : MemberDef )(implicit ctx : Context ): Tree = {
359
- liftedDefs(tree.symbol.owner) += rename(tree, tree.symbol.name)
358
+ private def liftDef (tree : MemberDef )(implicit ctx : Context , info : TransformerInfo ): Tree = {
359
+ val buf = liftedDefs(tree.symbol.owner)
360
+ transformFollowing(rename(tree, tree.symbol.name)) match {
361
+ case Thicket (trees) => buf ++= trees
362
+ case tree => buf += tree
363
+ }
360
364
EmptyTree
361
365
}
362
366
0 commit comments