aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2016-05-07 21:52:12 +0200
committerGuillaume Martres <smarter@ubuntu.com>2016-05-28 21:47:28 +0200
commite5ce083d3cbc1e78e3c5f26ca922581d098ba260 (patch)
tree353b38b0f42f1d64187a8ce719783e954565e5d4 /src/dotty/tools/dotc/core/Types.scala
parent5cf997cb2190a206529f45ad68ccd8f23032f191 (diff)
downloaddotty-e5ce083d3cbc1e78e3c5f26ca922581d098ba260.tar.gz
dotty-e5ce083d3cbc1e78e3c5f26ca922581d098ba260.tar.bz2
dotty-e5ce083d3cbc1e78e3c5f26ca922581d098ba260.zip
Add Types#TypeTraverser for convenience
This works similarly to `Trees#TreeTraverser`.
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--src/dotty/tools/dotc/core/Types.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index 50800bec7..09d7f0185 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -3408,6 +3408,12 @@ object Types {
}
}
+ abstract class TypeTraverser(implicit ctx: Context) extends TypeAccumulator[Unit] {
+ def traverse(tp: Type): Unit
+ def apply(x: Unit, tp: Type): Unit = traverse(tp)
+ protected def traverseChildren(tp: Type) = foldOver((), tp)
+ }
+
class ExistsAccumulator(p: Type => Boolean)(implicit ctx: Context) extends TypeAccumulator[Boolean] {
override def stopAtStatic = false
def apply(x: Boolean, tp: Type) = x || p(tp) || foldOver(x, tp)