diff options
author | Martin Odersky <odersky@gmail.com> | 2014-09-06 11:38:55 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-09-06 11:39:45 +0200 |
commit | c3078b12582773e3a9bb356e168fb646ec6733b1 (patch) | |
tree | 26a03cbee889413c4300eab15fe27fa07ef8322d /src/dotty/tools/dotc/ast/tpd.scala | |
parent | b58b90683652e1b6e2c32412f0a03ba614b61b33 (diff) | |
download | dotty-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.scala | 32 |
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 { |