diff options
author | Martin Odersky <odersky@gmail.com> | 2015-08-14 18:50:43 -0700 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-08-15 13:55:31 -0700 |
commit | b30843c59757ccaaf00c6733bf81f15eb911e6c2 (patch) | |
tree | 47ea0667e674f448bff261df665ae5c8a4f660e5 /src/dotty/tools/dotc/core/Phases.scala | |
parent | 05fb4208c68d194a8575d42852ee1c792a328267 (diff) | |
download | dotty-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.scala | 18 |
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) |