diff options
author | Martin Odersky <odersky@gmail.com> | 2016-05-21 13:30:36 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-05-23 12:01:40 +0200 |
commit | c793085ff63b8d7a3e9e371ca5bf5da5368ac6be (patch) | |
tree | 1fcf78b97d4624bc97621c002813604f0a573e65 /src | |
parent | 1bce89efb9ccb3d58c72a89440d6096de2c6e646 (diff) | |
download | dotty-c793085ff63b8d7a3e9e371ca5bf5da5368ac6be.tar.gz dotty-c793085ff63b8d7a3e9e371ca5bf5da5368ac6be.tar.bz2 dotty-c793085ff63b8d7a3e9e371ca5bf5da5368ac6be.zip |
Make sure delayed Tasty unpicklings are done at the latest at Pickler phase
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index b8622680b..2abcce0fa 100644 --- a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -53,7 +53,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { // I did not have the time to track down what caused the failure. // The testing scheme could well have produced a false negative. // - // private var stubs: Set[Symbol] = Set() + // private var stubs: Set[Symbol] = Set() private var roots: Set[SymDenotation] = null @@ -96,7 +96,9 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { class Completer(reader: TastyReader) extends LazyType { import reader._ def complete(denot: SymDenotation)(implicit ctx: Context): Unit = { - treeAtAddr(currentAddr) = new TreeReader(reader).readIndexedDef() + treeAtAddr(currentAddr) = + new TreeReader(reader).readIndexedDef()( + ctx.withPhaseNoLater(ctx.picklerPhase))//(ctx.withOwner(owner)) } } @@ -951,7 +953,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { class LazyReader[T <: AnyRef](reader: TreeReader, op: TreeReader => Context => T) extends Trees.Lazy[T] with DeferredPosition { def complete(implicit ctx: Context): T = { pickling.println(i"starting to read at ${reader.reader.currentAddr}") - val res = op(reader)(ctx.addMode(Mode.AllowDependentFunctions)) + val res = op(reader)(ctx.addMode(Mode.AllowDependentFunctions).withPhaseNoLater(ctx.picklerPhase)) normalizePos(res, parentPos) res } @@ -960,7 +962,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { class LazyAnnotationReader(sym: Symbol, reader: TreeReader) extends LazyAnnotation(sym) with DeferredPosition { def complete(implicit ctx: Context) = { - val res = reader.readTerm() + val res = reader.readTerm()(ctx.withPhaseNoLater(ctx.picklerPhase)) normalizePos(res, parentPos) res } |