diff options
author | Martin Odersky <odersky@gmail.com> | 2015-04-30 15:52:58 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-04-30 15:52:58 +0200 |
commit | 10a5f9198f03ae5b8dc54f1113f98da585c4e81a (patch) | |
tree | 5a1cb4bc7e0df01f3b117db216e6dec75f964526 /src/dotty | |
parent | 9e2dd75a8c229239b59a75fe6f9ddf201946032e (diff) | |
download | dotty-10a5f9198f03ae5b8dc54f1113f98da585c4e81a.tar.gz dotty-10a5f9198f03ae5b8dc54f1113f98da585c4e81a.tar.bz2 dotty-10a5f9198f03ae5b8dc54f1113f98da585c4e81a.zip |
Force TASTY trees read by unpickler in FromTasty
We want to ensure that the whole tree is read at phase
frontend. To achieve this, we run an empty traverser over the tree.
Diffstat (limited to 'src/dotty')
-rw-r--r-- | src/dotty/tools/dotc/FromTasty.scala | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/FromTasty.scala b/src/dotty/tools/dotc/FromTasty.scala index 3d3ae01c1..37f6933bf 100644 --- a/src/dotty/tools/dotc/FromTasty.scala +++ b/src/dotty/tools/dotc/FromTasty.scala @@ -15,6 +15,7 @@ import util._ import Decorators._ import dotty.tools.dotc.transform.Pickler import pickling.DottyUnpickler +import ast.tpd._ /** Compiler for TASTY files. * Usage: @@ -57,6 +58,10 @@ object FromTasty extends Driver { override def toString = s"class file $className" } + object force extends TreeTraverser { + def traverse(tree: Tree)(implicit ctx: Context): Unit = traverseChildren(tree) + } + class ReadTastyTreesFromClasses extends FrontEnd { override def runOn(units: List[CompilationUnit])(implicit ctx: Context): List[CompilationUnit] = units.map(readTASTY) @@ -80,6 +85,7 @@ object FromTasty extends Driver { val (List(unpickled), source) = unpickler.body(readPositions = true) val unit1 = new CompilationUnit(source) unit1.tpdTree = unpickled + force.traverse(unit1.tpdTree) unit1 case _ => cannotUnpickle(s"its class file ${info.classfile} does not have a TASTY attribute") |