Skip to content

Commit 8167993

Browse files
committed
Fix owner of symbols created from TASTY LazyReaders
A LazyReader is completed using the current Context which may have a different owner than the one that was in place when the LazyReader was created, we compensate for this by explicitly recording and setting `Context#owner` when completing the LazyReader.
1 parent 6ac9bf2 commit 8167993

File tree

2 files changed

+5
-8
lines changed

2 files changed

+5
-8
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,10 +1122,10 @@ class TreeUnpickler(reader: TastyReader,
11221122
setPos(start, CaseDef(pat, guard, rhs))
11231123
}
11241124

1125-
def readLater[T <: AnyRef](end: Addr, op: TreeReader => Context => T): Trees.Lazy[T] = {
1125+
def readLater[T <: AnyRef](end: Addr, op: TreeReader => Context => T)(implicit ctx: Context): Trees.Lazy[T] = {
11261126
val localReader = fork
11271127
goto(end)
1128-
new LazyReader(localReader, op)
1128+
new LazyReader(localReader, ctx.owner, op)
11291129
}
11301130

11311131
def readHole(end: Addr, isType: Boolean)(implicit ctx: Context): Tree = {
@@ -1177,10 +1177,10 @@ class TreeUnpickler(reader: TastyReader,
11771177
}
11781178
}
11791179

1180-
class LazyReader[T <: AnyRef](reader: TreeReader, op: TreeReader => Context => T) extends Trees.Lazy[T] {
1180+
class LazyReader[T <: AnyRef](reader: TreeReader, owner: Symbol, op: TreeReader => Context => T) extends Trees.Lazy[T] {
11811181
def complete(implicit ctx: Context): T = {
1182-
pickling.println(i"starting to read at ${reader.reader.currentAddr}")
1183-
op(reader)(ctx.withPhaseNoLater(ctx.picklerPhase))
1182+
pickling.println(i"starting to read at ${reader.reader.currentAddr} with owner $owner")
1183+
op(reader)(ctx.withPhaseNoLater(ctx.picklerPhase).withOwner(owner))
11841184
}
11851185
}
11861186

compiler/test/dotty/tools/dotc/FromTastyTests.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ class FromTastyTests extends ParallelTesting {
5858
"spec-sparsearray-old.scala",
5959
"collections_1.scala",
6060

61-
// Anonymous method not defined
62-
"i3067.scala",
63-
6461
// Infinite compilation
6562
"t3612.scala",
6663
)

0 commit comments

Comments
 (0)