diff --git a/compiler/src/dotty/tools/dotc/core/quoted/PickledQuotes.scala b/compiler/src/dotty/tools/dotc/core/quoted/PickledQuotes.scala index b4a065a473fd..56961c12c075 100644 --- a/compiler/src/dotty/tools/dotc/core/quoted/PickledQuotes.scala +++ b/compiler/src/dotty/tools/dotc/core/quoted/PickledQuotes.scala @@ -51,7 +51,8 @@ object PickledQuotes { val tastyBytes = TastyString.unpickle(expr.tasty) val unpickled = unpickle(tastyBytes, expr.args) unpickled match { - case PackageDef(_, (vdef: ValDef) :: Nil) => vdef.rhs + case PackageDef(_, (vdef: ValDef) :: Nil) => + vdef.rhs.changeOwner(vdef.symbol, ctx.owner) } } @@ -62,6 +63,7 @@ object PickledQuotes { unpickled match { case PackageDef(_, (vdef: ValDef) :: Nil) => vdef.rhs.asInstanceOf[TypeApply].args.head + .changeOwner(vdef.symbol, ctx.owner) } } diff --git a/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index 7f64f2cfb941..9bf24a42a93d 100644 --- a/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -1122,10 +1122,10 @@ class TreeUnpickler(reader: TastyReader, setPos(start, CaseDef(pat, guard, rhs)) } - def readLater[T <: AnyRef](end: Addr, op: TreeReader => Context => T): Trees.Lazy[T] = { + def readLater[T <: AnyRef](end: Addr, op: TreeReader => Context => T)(implicit ctx: Context): Trees.Lazy[T] = { val localReader = fork goto(end) - new LazyReader(localReader, op) + new LazyReader(localReader, ctx.owner, op) } def readHole(end: Addr, isType: Boolean)(implicit ctx: Context): Tree = { @@ -1177,10 +1177,10 @@ class TreeUnpickler(reader: TastyReader, } } - class LazyReader[T <: AnyRef](reader: TreeReader, op: TreeReader => Context => T) extends Trees.Lazy[T] { + class LazyReader[T <: AnyRef](reader: TreeReader, owner: Symbol, op: TreeReader => Context => T) extends Trees.Lazy[T] { def complete(implicit ctx: Context): T = { - pickling.println(i"starting to read at ${reader.reader.currentAddr}") - op(reader)(ctx.withPhaseNoLater(ctx.picklerPhase)) + pickling.println(i"starting to read at ${reader.reader.currentAddr} with owner $owner") + op(reader)(ctx.withPhaseNoLater(ctx.picklerPhase).withOwner(owner)) } } diff --git a/compiler/test/dotty/tools/dotc/FromTastyTests.scala b/compiler/test/dotty/tools/dotc/FromTastyTests.scala index 9393160a78b9..90aa2921dbf2 100644 --- a/compiler/test/dotty/tools/dotc/FromTastyTests.scala +++ b/compiler/test/dotty/tools/dotc/FromTastyTests.scala @@ -58,9 +58,6 @@ class FromTastyTests extends ParallelTesting { "spec-sparsearray-old.scala", "collections_1.scala", - // Anonymous method not defined - "i3067.scala", - // Infinite compilation "t3612.scala", )