From afb74449e0443d321da4b79e776eab376fdc51b1 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sat, 22 Feb 2014 10:58:18 +0100 Subject: More statistics for created and retained trees --- src/dotty/tools/dotc/ast/Trees.scala | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/dotty/tools/dotc/ast/Trees.scala') diff --git a/src/dotty/tools/dotc/ast/Trees.scala b/src/dotty/tools/dotc/ast/Trees.scala index f4f1260f4..12a635ce6 100644 --- a/src/dotty/tools/dotc/ast/Trees.scala +++ b/src/dotty/tools/dotc/ast/Trees.scala @@ -297,6 +297,18 @@ object Trees { def orElse[U >: Untyped <: T](that: => Tree[U]): Tree[U] = if (this eq genericEmptyTree) that else this + /** The number of nodes in this tree */ + def treeSize: Int = { + var s = 1 + def addSize(elem: Any): Unit = elem match { + case t: Tree[_] => s += t.treeSize + case ts: List[_] => ts foreach addSize + case _ => + } + productIterator foreach addSize + s + } + override def toText(printer: Printer) = printer.toText(this) override def hashCode(): Int = System.identityHashCode(this) -- cgit v1.2.3