@@ -62,7 +62,8 @@ object TreeTransforms {
62
62
def phase : MiniPhase
63
63
64
64
/** The phase at which the tree is transformed */
65
- final def treeTransformPhase : Phase = phase.next
65
+ def treeTransformPhase (implicit ctx : Context , info : TransformerInfo ): Phase =
66
+ phase.next
66
67
67
68
val cpy : TypedTreeCopier = cpyBetweenPhases
68
69
@@ -140,10 +141,11 @@ object TreeTransforms {
140
141
/** Transform single node using all transforms following the current one in this group */
141
142
def transformFollowing (tree : Tree )(implicit ctx : Context , info : TransformerInfo ): Tree = info.group.transformSingle(tree, phase.idx + 1 )
142
143
143
- def atGroupEnd [T ](action : Context => T )(implicit ctx : Context , info : TransformerInfo ) = {
144
- val last = info.transformers(info.transformers.length - 1 )
145
- action(ctx.withPhase(last.phase.next))
146
- }
144
+ def atGroupEnd [T ](action : Context => T )(implicit ctx : Context , info : TransformerInfo ) =
145
+ action(ctx.withPhase(groupEndPhase))
146
+
147
+ def groupEndPhase (implicit ctx : Context , info : TransformerInfo ) =
148
+ info.transformers(info.transformers.length - 1 ).phase.next
147
149
}
148
150
149
151
/** A phase that defines a TreeTransform to be used in a group */
@@ -494,7 +496,7 @@ object TreeTransforms {
494
496
var allDone = i < l
495
497
while (i < l) {
496
498
val oldTransform = result(i)
497
- val newTransform = mutator(oldTransform, tree, ctx.withPhase(oldTransform.treeTransformPhase))
499
+ val newTransform = mutator(oldTransform, tree, ctx.withPhase(oldTransform.treeTransformPhase(ctx, info) ))
498
500
allDone = allDone && (newTransform eq NoTransform )
499
501
if (! (oldTransform eq newTransform)) {
500
502
if (! transformersCopied) result = result.clone()
@@ -1180,7 +1182,7 @@ object TreeTransforms {
1180
1182
util.Stats .record(" TreeTransform.transform" )
1181
1183
// if cur > 0 then some of the symbols can be created by already performed transformations
1182
1184
// this means that their denotations could not exists in previous period
1183
- val pctx = ctx.withPhase(info.transformers(cur).treeTransformPhase)
1185
+ val pctx = ctx.withPhase(info.transformers(cur).treeTransformPhase(ctx, info) )
1184
1186
tree match {
1185
1187
// split one big match into 2 smaller ones
1186
1188
case tree : NameTree => transformNamed(tree, info, cur)(pctx)
0 commit comments