From 43a0f5d6def26ed83b2b11ec0eefb4b47059212a Mon Sep 17 00:00:00 2001 From: Olivier Blanvillain Date: Fri, 3 Aug 2018 16:42:40 +0200 Subject: [PATCH] Fix incorrect ctx chain in TreeUnpickler In this example: object Test { def length(l: LIST): Boolean = l eq l sealed trait LIST } trait LIST used to have the context of method length as its outer context. After this PR TreeUnpickler follows the same pattern used in Namer. --- compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index 79227028e1e1..e085786d1863 100644 --- a/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -102,9 +102,10 @@ class TreeUnpickler(reader: TastyReader, } } - class Completer(owner: Symbol, reader: TastyReader) extends LazyType { + class Completer(owner: Symbol, reader: TastyReader)(implicit creationContext: Context) extends LazyType { import reader._ def complete(denot: SymDenotation)(implicit ctx: Context): Unit = { + implicit val ctx = creationContext treeAtAddr(currentAddr) = new TreeReader(reader).readIndexedDef()( ctx.withPhaseNoLater(ctx.picklerPhase).withOwner(owner))