aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-05-23 14:50:49 +0200
committerMartin Odersky <odersky@gmail.com>2016-05-23 14:50:49 +0200
commit1b4ca37e624a64a80181efa71ec079b04494986e (patch)
treee64b730f98a66cba794a0a58807bcb491febb3e1 /src/dotty/tools/dotc/core
parentbef7363e3c04ec444176752e187c62b8d20c8961 (diff)
downloaddotty-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')
-rw-r--r--src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala8
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