Skip to content

Commit bf70d25

Browse files
committed
Run most phases in second group at group end
Only exception is RefChecks which produces errors when run at end of group. Probably because it clashes with ExtensionMethods.
1 parent 7c19594 commit bf70d25

File tree

11 files changed

+33
-8
lines changed

11 files changed

+33
-8
lines changed

compiler/src/dotty/tools/dotc/transform/ByNameClosures.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ class ByNameClosures extends TransformByNameApply with IdentityDenotTransformer
2929

3030
override def phaseName: String = "byNameClosures"
3131

32+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
33+
groupEndPhase
34+
3235
override def mkByNameClosure(arg: Tree, argType: Type)(implicit ctx: Context): Tree = {
3336
val meth = ctx.newSymbol(
3437
ctx.owner, nme.ANON_FUN, Synthetic | Method, MethodType(Nil, Nil, argType))

compiler/src/dotty/tools/dotc/transform/CheckStatic.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ class CheckStatic extends MiniPhaseTransform { thisTransformer =>
3939

4040
override def phaseName = "checkStatic"
4141

42+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
43+
groupEndPhase
44+
4245
override def transformTemplate(tree: tpd.Template)(implicit ctx: Context, info: TransformerInfo): tpd.Tree = {
4346
val defns = tree.body.collect{case t: ValOrDefDef => t}
4447
var hadNonStaticField = false

compiler/src/dotty/tools/dotc/transform/ElimRepeated.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ class ElimRepeated extends MiniPhaseTransform with InfoTransformer { thisTransfo
3030

3131
override def phaseName = "elimRepeated"
3232

33+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
34+
groupEndPhase
35+
36+
3337
override def changesMembers = true // the phase adds vararg bridges
3438

3539
def transformInfo(tp: Type, sym: Symbol)(implicit ctx: Context): Type =

compiler/src/dotty/tools/dotc/transform/ExpandSAMs.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ import dotty.tools.dotc.util.Positions.Position
2424
class ExpandSAMs extends MiniPhaseTransform { thisTransformer =>
2525
override def phaseName = "expandSAMs"
2626

27+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
28+
groupEndPhase
29+
2730
import ast.tpd._
2831

2932
/** Is the SAMType `cls` also a SAM under the rules of the platform? */

compiler/src/dotty/tools/dotc/transform/ExtensionMethods.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ class ExtensionMethods extends MiniPhaseTransform with DenotTransformer with Ful
4242
import tpd._
4343
import ExtensionMethods._
4444

45+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
46+
groupEndPhase
47+
4548
/** the following two members override abstract members in Transform */
4649
override def phaseName: String = "extmethods"
4750

compiler/src/dotty/tools/dotc/transform/HoistSuperArgs.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ class HoistSuperArgs extends MiniPhaseTransform with IdentityDenotTransformer {
4242

4343
def phaseName = "hoistSuperArgs"
4444

45+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
46+
groupEndPhase
47+
4548
override def runsAfter = Set(classOf[ByNameClosures])
4649
// By name closures need to be introduced first in order to be hoisted out here.
4750
// There's an interaction with by name closures in that the <cbn-arg> marker

compiler/src/dotty/tools/dotc/transform/LiftTry.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ class LiftTry extends MiniPhase with IdentityDenotTransformer { thisTransform =>
3232
class Transform(needLift: Boolean) extends TreeTransform {
3333
def phase = thisTransform
3434

35+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
36+
groupEndPhase
37+
3538
override def prepareForApply(tree: Apply)(implicit ctx: Context) =
3639
if (tree.fun.symbol.is(Label)) this
3740
else liftingTransform

compiler/src/dotty/tools/dotc/transform/NormalizeFlags.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import DenotTransformers.SymTransformer
66
import Phases.Phase
77
import Contexts.Context
88
import SymDenotations.SymDenotation
9-
import TreeTransforms.MiniPhaseTransform
9+
import TreeTransforms.{MiniPhaseTransform, TransformerInfo}
1010
import Flags._, Symbols._
1111

1212
/** 1. Widens all private[this] and protected[this] qualifiers to just private/protected
@@ -17,6 +17,9 @@ import Flags._, Symbols._
1717
class NormalizeFlags extends MiniPhaseTransform with SymTransformer { thisTransformer =>
1818
override def phaseName = "normalizeFlags"
1919

20+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
21+
groupEndPhase
22+
2023
def transformSym(ref: SymDenotation)(implicit ctx: Context) = {
2124
var newFlags = ref.flags &~ Local
2225
if (newFlags != ref.flags) ref.copySymDenotation(initFlags = newFlags)

compiler/src/dotty/tools/dotc/transform/TailRec.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ class TailRec extends MiniPhaseTransform with DenotTransformer with FullParamete
7171

7272
override def phaseName: String = "tailrec"
7373

74+
override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
75+
groupEndPhase
76+
7477
final val labelFlags = Flags.Synthetic | Flags.Label
7578

7679
/** Symbols of methods that have @tailrec annotatios inside */

compiler/src/dotty/tools/dotc/typer/RefChecks.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,10 @@ class RefChecks extends MiniPhase { thisTransformer =>
806806
class Transform(currentLevel: RefChecks.OptLevelInfo = RefChecks.NoLevelInfo) extends TreeTransform {
807807
def phase = thisTransformer
808808

809+
// Errors when run at end of group
810+
//override def treeTransformPhase(implicit ctx: Context, info: TransformerInfo) =
811+
// groupEndPhase
812+
809813
override def prepareForStats(trees: List[Tree])(implicit ctx: Context) = {
810814
// println(i"preparing for $trees%; %, owner = ${ctx.owner}")
811815
if (ctx.owner.isTerm) new Transform(new LevelInfo(currentLevel.levelAndIndex, trees))

tests/pickling/i3149.scala

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)