Skip to content

Commit 2cacc33

Browse files
committed
Make sure delayed Tasty unpicklings are done at the latest at Pickler phase
1 parent 4755570 commit 2cacc33

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
5353
// I did not have the time to track down what caused the failure.
5454
// The testing scheme could well have produced a false negative.
5555
//
56-
// private var stubs: Set[Symbol] = Set()
56+
// private var stubs: Set[Symbol] = Set()
5757

5858
private var roots: Set[SymDenotation] = null
5959

@@ -96,7 +96,9 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
9696
class Completer(reader: TastyReader) extends LazyType {
9797
import reader._
9898
def complete(denot: SymDenotation)(implicit ctx: Context): Unit = {
99-
treeAtAddr(currentAddr) = new TreeReader(reader).readIndexedDef()
99+
treeAtAddr(currentAddr) =
100+
new TreeReader(reader).readIndexedDef()(
101+
ctx.withPhaseNoLater(ctx.picklerPhase))//(ctx.withOwner(owner))
100102
}
101103
}
102104

@@ -951,7 +953,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
951953
class LazyReader[T <: AnyRef](reader: TreeReader, op: TreeReader => Context => T) extends Trees.Lazy[T] with DeferredPosition {
952954
def complete(implicit ctx: Context): T = {
953955
pickling.println(i"starting to read at ${reader.reader.currentAddr}")
954-
val res = op(reader)(ctx.addMode(Mode.AllowDependentFunctions))
956+
val res = op(reader)(ctx.addMode(Mode.AllowDependentFunctions).withPhaseNoLater(ctx.picklerPhase))
955957
normalizePos(res, parentPos)
956958
res
957959
}
@@ -960,7 +962,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
960962
class LazyAnnotationReader(sym: Symbol, reader: TreeReader)
961963
extends LazyAnnotation(sym) with DeferredPosition {
962964
def complete(implicit ctx: Context) = {
963-
val res = reader.readTerm()
965+
val res = reader.readTerm()(ctx.withPhaseNoLater(ctx.picklerPhase))
964966
normalizePos(res, parentPos)
965967
res
966968
}

0 commit comments

Comments
 (0)