diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2016-05-07 21:52:12 +0200 |
---|---|---|
committer | Guillaume Martres <smarter@ubuntu.com> | 2016-05-28 21:47:28 +0200 |
commit | e5ce083d3cbc1e78e3c5f26ca922581d098ba260 (patch) | |
tree | 353b38b0f42f1d64187a8ce719783e954565e5d4 /src | |
parent | 5cf997cb2190a206529f45ad68ccd8f23032f191 (diff) | |
download | dotty-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')
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 6 |
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) |