aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-03-29 15:02:51 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-03-31 14:52:08 +0200
commit26b8ec48adec709cf2b07b470ada774c708e96a4 (patch)
tree2d08891102e67788b94c8d67f13052a43f3ea493 /src
parenta73b510b82460247524a07a6dd4f0bfaac74ccfc (diff)
downloaddotty-26b8ec48adec709cf2b07b470ada774c708e96a4.tar.gz
dotty-26b8ec48adec709cf2b07b470ada774c708e96a4.tar.bz2
dotty-26b8ec48adec709cf2b07b470ada774c708e96a4.zip
Adapting containsPhase to phase groups
A list of names contains a phasegroup if it contains any phase in the group.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/core/Decorators.scala7
-rw-r--r--src/dotty/tools/dotc/core/Phases.scala4
-rw-r--r--src/dotty/tools/dotc/transform/TreeTransform.scala4
3 files changed, 9 insertions, 6 deletions
diff --git a/src/dotty/tools/dotc/core/Decorators.scala b/src/dotty/tools/dotc/core/Decorators.scala
index cd9680e64..21f914d99 100644
--- a/src/dotty/tools/dotc/core/Decorators.scala
+++ b/src/dotty/tools/dotc/core/Decorators.scala
@@ -6,6 +6,7 @@ import Symbols._
import Contexts._, Names._, Phases._, printing.Texts._, printing.Printer
import util.Positions.Position, util.SourcePosition
import collection.mutable.ListBuffer
+import dotty.tools.dotc.transform.TreeTransforms._
import scala.language.implicitConversions
/** This object provides useful implicit decorators for types defined elsewhere */
@@ -127,8 +128,10 @@ object Decorators {
* one of the names in the list of strings.
*/
implicit class PhaseListDecorator(val names: List[String]) extends AnyVal {
- def containsPhase(phase: Phase) =
- names exists (phase.name.startsWith)
+ def containsPhase(phase: Phase): Boolean = phase match {
+ case phase: TreeTransformer => phase.transformations.exists(containsPhase)
+ case _ => names exists (phase.name.startsWith)
+ }
}
implicit def sourcePos(pos: Position)(implicit ctx: Context): SourcePosition =
diff --git a/src/dotty/tools/dotc/core/Phases.scala b/src/dotty/tools/dotc/core/Phases.scala
index 87242c9b5..8b5606da2 100644
--- a/src/dotty/tools/dotc/core/Phases.scala
+++ b/src/dotty/tools/dotc/core/Phases.scala
@@ -107,11 +107,11 @@ object Phases {
postTyperEmmited = true
new PostTyperTransformer {
override def name: String = transformations.map(_.name).mkString("TreeTransform:{", ", ", "}")
- override protected def transformations: Array[TreeTransform] = transforms.toArray
+ override def transformations: Array[TreeTransform] = transforms.toArray
}
} else new TreeTransformer {
override def name: String = transformations.map(_.name).mkString("TreeTransform:{", ", ", "}")
- override protected def transformations: Array[TreeTransform] = transforms.toArray
+ override def transformations: Array[TreeTransform] = transforms.toArray
}
squashedPhases += block
block.init(this, phasess(i).head.id, phasess(i).last.id)
diff --git a/src/dotty/tools/dotc/transform/TreeTransform.scala b/src/dotty/tools/dotc/transform/TreeTransform.scala
index 10857da5a..684714199 100644
--- a/src/dotty/tools/dotc/transform/TreeTransform.scala
+++ b/src/dotty/tools/dotc/transform/TreeTransform.scala
@@ -129,7 +129,7 @@ object TreeTransforms {
protected def mkTreeTransformer = new TreeTransformer {
override def name: String = TreeTransform.this.name
- override protected def transformations = Array(TreeTransform.this)
+ override def transformations = Array(TreeTransform.this)
}
override def run(implicit ctx: Context): Unit = {
@@ -414,7 +414,7 @@ object TreeTransforms {
/** A group of tree transforms that are applied in sequence during the same phase */
abstract class TreeTransformer extends Phase {
- protected def transformations: Array[TreeTransform]
+ def transformations: Array[TreeTransform]
override def run(implicit ctx: Context): Unit = {
val curTree = ctx.compilationUnit.tpdTree