Skip to content

Commit e04e72b

Browse files
authored
Merge pull request #4115 from dotty-staging/fix/tasty-lazy-owner
Fix owner of symbols created from TASTY LazyReaders
2 parents 8fe2b1d + ff9e8b3 commit e04e72b

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

compiler/src/dotty/tools/dotc/core/quoted/PickledQuotes.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ object PickledQuotes {
5151
val tastyBytes = TastyString.unpickle(expr.tasty)
5252
val unpickled = unpickle(tastyBytes, expr.args)
5353
unpickled match {
54-
case PackageDef(_, (vdef: ValDef) :: Nil) => vdef.rhs
54+
case PackageDef(_, (vdef: ValDef) :: Nil) =>
55+
vdef.rhs.changeOwner(vdef.symbol, ctx.owner)
5556
}
5657
}
5758

@@ -62,6 +63,7 @@ object PickledQuotes {
6263
unpickled match {
6364
case PackageDef(_, (vdef: ValDef) :: Nil) =>
6465
vdef.rhs.asInstanceOf[TypeApply].args.head
66+
.changeOwner(vdef.symbol, ctx.owner)
6567
}
6668
}
6769

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
@@ -57,9 +57,6 @@ class FromTastyTests extends ParallelTesting {
5757
"spec-sparsearray-old.scala",
5858
"collections_1.scala",
5959

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

0 commit comments

Comments
 (0)