aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Phases.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-08-14 18:50:43 -0700
committerMartin Odersky <odersky@gmail.com>2015-08-15 13:55:31 -0700
commitb30843c59757ccaaf00c6733bf81f15eb911e6c2 (patch)
tree47ea0667e674f448bff261df665ae5c8a4f660e5 /src/dotty/tools/dotc/core/Phases.scala
parent05fb4208c68d194a8575d42852ee1c792a328267 (diff)
downloaddotty-b30843c59757ccaaf00c6733bf81f15eb911e6c2.tar.gz
dotty-b30843c59757ccaaf00c6733bf81f15eb911e6c2.tar.bz2
dotty-b30843c59757ccaaf00c6733bf81f15eb911e6c2.zip
Fix miniphase assembly.
There were two architectural errors here, which confused TreeTransforms and MiniPhases and which caused "NotDefinedHere" on transformFollowing: 1. TreeTransforms should not have idx fields, MiniPhases have them.2 2. TreeTransformers initialize arrays of MiniPhases not TreeTransforms.
Diffstat (limited to 'src/dotty/tools/dotc/core/Phases.scala')
-rw-r--r--src/dotty/tools/dotc/core/Phases.scala18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/dotty/tools/dotc/core/Phases.scala b/src/dotty/tools/dotc/core/Phases.scala
index 42b03484e..24eb19cd5 100644
--- a/src/dotty/tools/dotc/core/Phases.scala
+++ b/src/dotty/tools/dotc/core/Phases.scala
@@ -109,11 +109,9 @@ object Phases {
assert(false, s"Only tree transforms can be squashed, ${phase.phaseName} can not be squashed")
}
}
- val transforms = filteredPhaseBlock.asInstanceOf[List[MiniPhase]].map(_.treeTransform)
val block = new TreeTransformer {
- override def phaseName: String = transformations.map(_.phase.phaseName).mkString("TreeTransform:{", ", ", "}")
-
- override def transformations: Array[TreeTransform] = transforms.toArray
+ override def phaseName: String = miniPhases.map(_.phaseName).mkString("TreeTransform:{", ", ", "}")
+ override def miniPhases: Array[MiniPhase] = filteredPhaseBlock.asInstanceOf[List[MiniPhase]].toArray
}
prevPhases ++= filteredPhaseBlock.map(_.getClazz)
block
@@ -145,7 +143,7 @@ object Phases {
val flatPhases = collection.mutable.ListBuffer[Phase]()
phasess.foreach(p => p match {
- case t: TreeTransformer => flatPhases ++= t.transformations.map(_.phase)
+ case t: TreeTransformer => flatPhases ++= t.miniPhases
case _ => flatPhases += p
})
@@ -173,11 +171,11 @@ object Phases {
val phase = phasess(i)
phase match {
case t: TreeTransformer =>
- val transforms = t.transformations
- transforms.foreach{ x =>
- checkRequirements(x.phase)
- x.phase.init(this, nextPhaseId)}
- t.init(this, transforms.head.phase.id, transforms.last.phase.id)
+ val miniPhases = t.miniPhases
+ miniPhases.foreach{ phase =>
+ checkRequirements(phase)
+ phase.init(this, nextPhaseId)}
+ t.init(this, miniPhases.head.id, miniPhases.last.id)
case _ =>
phase.init(this, nextPhaseId)
checkRequirements(phase)