aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-08-09 13:45:29 +0200
committerMartin Odersky <odersky@gmail.com>2014-08-09 13:45:29 +0200
commit57c6c85cbc953a3489ee8d16bb5b7be862183924 (patch)
treeb00bc4ac442e376b9a8da38ca9d5a4039e7630b6 /src/dotty/tools/dotc/core
parent9024f25e78a9fe5d27dd2c30aa24999d8901dab6 (diff)
downloaddotty-57c6c85cbc953a3489ee8d16bb5b7be862183924.tar.gz
dotty-57c6c85cbc953a3489ee8d16bb5b7be862183924.tar.bz2
dotty-57c6c85cbc953a3489ee8d16bb5b7be862183924.zip
Disentangle phases from treetransforms
TreeTransforms are no longer phases. This allows to generate new transforms in prepare... methods without running into the problem that thee new transforms are undefined as phases. It also makes for a cleaner separation of concerns.
Diffstat (limited to 'src/dotty/tools/dotc/core')
-rw-r--r--src/dotty/tools/dotc/core/Decorators.scala2
-rw-r--r--src/dotty/tools/dotc/core/Phases.scala8
2 files changed, 5 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/core/Decorators.scala b/src/dotty/tools/dotc/core/Decorators.scala
index cd7b46896..c96f1ba31 100644
--- a/src/dotty/tools/dotc/core/Decorators.scala
+++ b/src/dotty/tools/dotc/core/Decorators.scala
@@ -130,7 +130,7 @@ object Decorators {
*/
implicit class PhaseListDecorator(val names: List[String]) extends AnyVal {
def containsPhase(phase: Phase): Boolean = phase match {
- case phase: TreeTransformer => phase.transformations.exists(containsPhase)
+ case phase: TreeTransformer => phase.transformations.exists(trans => containsPhase(trans.phase))
case _ => names exists (n => n == "all" || phase.name.startsWith(n))
}
}
diff --git a/src/dotty/tools/dotc/core/Phases.scala b/src/dotty/tools/dotc/core/Phases.scala
index 5c569bc7f..cecc5d1d7 100644
--- a/src/dotty/tools/dotc/core/Phases.scala
+++ b/src/dotty/tools/dotc/core/Phases.scala
@@ -8,7 +8,7 @@ import DenotTransformers._
import Denotations._
import config.Printers._
import scala.collection.mutable.{ListBuffer, ArrayBuffer}
-import dotty.tools.dotc.transform.TreeTransforms.{TreeTransformer, TreeTransform}
+import dotty.tools.dotc.transform.TreeTransforms.{TreeTransformer, MiniPhase, TreeTransform}
import dotty.tools.dotc.transform.TreeTransforms
import Periods._
@@ -80,7 +80,7 @@ object Phases {
val phasesInBlock: Set[String] = phasess(i).map(_.name).toSet
for(phase<-phasess(i)) {
phase match {
- case p: TreeTransform =>
+ case p: MiniPhase =>
val unmetRequirements = p.runsAfterGroupsOf &~ prevPhases
assert(unmetRequirements.isEmpty,
@@ -90,9 +90,9 @@ object Phases {
assert(false, s"Only tree transforms can be squashed, ${phase.name} can not be squashed")
}
}
- val transforms = phasess(i).asInstanceOf[List[TreeTransform]]
+ val transforms = phasess(i).asInstanceOf[List[MiniPhase]].map(_.treeTransform)
val block = new TreeTransformer {
- override def name: String = transformations.map(_.name).mkString("TreeTransform:{", ", ", "}")
+ override def name: String = transformations.map(_.phase.name).mkString("TreeTransform:{", ", ", "}")
override def transformations: Array[TreeTransform] = transforms.toArray
}
squashedPhases += block