diff options
Diffstat (limited to 'compiler/test/dotty/tools/dotc/parsing/parsePackage.scala')
-rw-r--r-- | compiler/test/dotty/tools/dotc/parsing/parsePackage.scala | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/compiler/test/dotty/tools/dotc/parsing/parsePackage.scala b/compiler/test/dotty/tools/dotc/parsing/parsePackage.scala new file mode 100644 index 000000000..df5368ffe --- /dev/null +++ b/compiler/test/dotty/tools/dotc/parsing/parsePackage.scala @@ -0,0 +1,83 @@ +package dotty.tools +package dotc +package parsing + +import dotty.tools.dotc._ +import core._, ast._ +import Trees._ +import Contexts.Context + +object parsePackage extends ParserTest { + + import ast.untpd._ + + var nodes = 0 + + val transformer = new UntypedTreeMap { + override def transform(tree: Tree)(implicit ctx: Context): Tree = { + nodes += 1 + tree match { + case Ident(name) => + Ident(name) + case This(name) => + This(name) + case TypedSplice(t) => + TypedSplice(t) + case SymbolLit(str) => + tree + case InterpolatedString(id, segments) => + InterpolatedString(id, segments map transform) + case mdef @ ModuleDef(name, impl) => + ModuleDef(name, transformSub(impl)).withMods(mdef.mods) + case Function(params, body) => + Function(params map transform, body) + case InfixOp(l, o, r) => + InfixOp(transform(l), o, transform(r)) + case PostfixOp(l, o) => + PostfixOp(transform(l), o) + case PrefixOp(o, t) => + PrefixOp(o, transform(t)) + case Parens(t) => + Parens(transform(t)) + case Tuple(ts) => + Tuple(ts map transform) + case WhileDo(cond, body) => + WhileDo(transform(cond), transform(body)) + case DoWhile(body, cond) => + DoWhile(transform(body), transform(cond)) + case ForYield(enums, expr) => + ForYield(enums map transform, transform(expr)) + case ForDo(enums, expr) => + ForDo(enums map transform, transform(expr)) + case GenFrom(pat, expr) => + GenFrom(transform(pat), transform(expr)) + case GenAlias(pat, expr) => + GenAlias(transform(pat), transform(expr)) + case PatDef(mods, pats, tpt, expr) => + PatDef(mods, pats map transform, transform(tpt), transform(expr)) + case ContextBounds(bounds, cxBounds) => + ContextBounds(transformSub(bounds), cxBounds map transform) + case _ => + super.transform(tree) + } + } + } + + def test() = { + reset() + nodes = 0 + val start = System.nanoTime() + parseDir("./src") + parseDir("./scala-scala/src") + val ms1 = (System.nanoTime() - start)/1000000 + val buf = parsedTrees map transformer.transform + val ms2 = (System.nanoTime() - start)/1000000 + println(s"$parsed files parsed in ${ms1}ms, $nodes nodes transformed in ${ms2-ms1}ms, total trees created = ${Trees.ntrees}") + ctx.reporter.printSummary(ctx) + } + + def main(args: Array[String]): Unit = { +// parse("/Users/odersky/workspace/scala/src/compiler/scala/tools/nsc/doc/model/ModelFactoryTypeSupport.scala") + for (i <- 0 until 10) test() + } +} |