diff options
author | Martin Odersky <odersky@gmail.com> | 2016-05-23 14:50:49 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-05-23 14:50:49 +0200 |
commit | 1b4ca37e624a64a80181efa71ec079b04494986e (patch) | |
tree | e64b730f98a66cba794a0a58807bcb491febb3e1 /src/dotty/tools/dotc/core/tasty | |
parent | bef7363e3c04ec444176752e187c62b8d20c8961 (diff) | |
download | dotty-1b4ca37e624a64a80181efa71ec079b04494986e.tar.gz dotty-1b4ca37e624a64a80181efa71ec079b04494986e.tar.bz2 dotty-1b4ca37e624a64a80181efa71ec079b04494986e.zip |
Remember owner in completer
Otherwise we might get a false owner if completing from somewhere else.
We do not have a failing test to demonstrate the problem, but it looks
like the right thing to do.
Diffstat (limited to 'src/dotty/tools/dotc/core/tasty')
-rw-r--r-- | src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index 787b89ef8..ddc43e640 100644 --- a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -92,12 +92,12 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { def toTermName(ref: NameRef): TermName = toTermName(tastyName(ref)) def toTypeName(ref: NameRef): TypeName = toTermName(ref).toTypeName - class Completer(reader: TastyReader) extends LazyType { + class Completer(owner: Symbol, reader: TastyReader) extends LazyType { import reader._ def complete(denot: SymDenotation)(implicit ctx: Context): Unit = { treeAtAddr(currentAddr) = new TreeReader(reader).readIndexedDef()( - ctx.withPhaseNoLater(ctx.picklerPhase))//(ctx.withOwner(owner)) + ctx.withPhaseNoLater(ctx.picklerPhase).withOwner(owner)) } } @@ -463,12 +463,12 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { case Some(rootd) => pickling.println(i"overwriting ${rootd.symbol} # ${rootd.hashCode}") rootd.info = adjustIfModule( - new Completer(subReader(start, end)) with SymbolLoaders.SecondCompleter) + new Completer(ctx.owner, subReader(start, end)) with SymbolLoaders.SecondCompleter) rootd.flags = flags &~ Touched // allow one more completion rootd.privateWithin = privateWithin rootd.symbol case _ => - val completer = adjustIfModule(new Completer(subReader(start, end))) + val completer = adjustIfModule(new Completer(ctx.owner, subReader(start, end))) if (isClass) ctx.newClassSymbol(ctx.owner, name.asTypeName, flags, completer, privateWithin, coord = start.index) else |