aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/ast/tpd.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-09-06 11:38:55 +0200
committerMartin Odersky <odersky@gmail.com>2014-09-06 11:39:45 +0200
commitc3078b12582773e3a9bb356e168fb646ec6733b1 (patch)
tree26a03cbee889413c4300eab15fe27fa07ef8322d /src/dotty/tools/dotc/ast/tpd.scala
parentb58b90683652e1b6e2c32412f0a03ba614b61b33 (diff)
downloaddotty-c3078b12582773e3a9bb356e168fb646ec6733b1.tar.gz
dotty-c3078b12582773e3a9bb356e168fb646ec6733b1.tar.bz2
dotty-c3078b12582773e3a9bb356e168fb646ec6733b1.zip
Make foreach/exsists into tree infix methods
foreachSubTree and existsSubTree are now infix methods. Streamlines their use somewhat.
Diffstat (limited to 'src/dotty/tools/dotc/ast/tpd.scala')
-rw-r--r--src/dotty/tools/dotc/ast/tpd.scala32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/dotty/tools/dotc/ast/tpd.scala b/src/dotty/tools/dotc/ast/tpd.scala
index 175a6b37e..c1c274ae8 100644
--- a/src/dotty/tools/dotc/ast/tpd.scala
+++ b/src/dotty/tools/dotc/ast/tpd.scala
@@ -356,22 +356,6 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
} else foldOver(sym, tree)
}
- // --- Higher order traversal methods -------------------------------
-
- def foreachSubTreeOf(tree: Tree)(f: Tree => Unit): Unit = { //TODO should go in tpd.
- val traverser = new TreeTraverser {
- def traverse(tree: Tree) = foldOver(f(tree), tree)
- }
- traverser.traverse(tree)
- }
-
- def existsSubTreeOf(tree: Tree)(p: Tree => Boolean): Boolean = {
- val acc = new TreeAccumulator[Boolean] {
- def apply(x: Boolean, t: Tree) = x || p(t) || foldOver(x, t)
- }
- acc(false, tree)
- }
-
override val cpy = new TypedTreeCopier
class TypedTreeCopier extends TreeCopier {
@@ -583,6 +567,22 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
def or(that: Tree)(implicit ctx: Context): Tree =
tree.select(defn.Boolean_||).appliedTo(that)
+
+ // --- Higher order traversal methods -------------------------------
+
+ def foreachSubTree(f: Tree => Unit): Unit = { //TODO should go in tpd.
+ val traverser = new TreeTraverser {
+ def traverse(tree: Tree) = foldOver(f(tree), tree)
+ }
+ traverser.traverse(tree)
+ }
+
+ def existsSubTree(p: Tree => Boolean): Boolean = {
+ val acc = new TreeAccumulator[Boolean] {
+ def apply(x: Boolean, t: Tree) = x || p(t) || foldOver(x, t)
+ }
+ acc(false, tree)
+ }
}
implicit class ListOfTreeDecorator(val xs: List[tpd.Tree]) extends AnyVal {