aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/pickling/UnPickler.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-30 17:04:09 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-30 17:04:09 +0200
commit34f165080530d0b4817235b161f89e10d6763da4 (patch)
treee2eff3f755a297db6942593103748f6bd738ff8b /src/dotty/tools/dotc/core/pickling/UnPickler.scala
parent14e0f720534397429444fb88d1125e19323dfa4f (diff)
downloaddotty-34f165080530d0b4817235b161f89e10d6763da4.tar.gz
dotty-34f165080530d0b4817235b161f89e10d6763da4.tar.bz2
dotty-34f165080530d0b4817235b161f89e10d6763da4.zip
Both module and class being unpickled need to register links.
Diffstat (limited to 'src/dotty/tools/dotc/core/pickling/UnPickler.scala')
-rw-r--r--src/dotty/tools/dotc/core/pickling/UnPickler.scala14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/pickling/UnPickler.scala b/src/dotty/tools/dotc/core/pickling/UnPickler.scala
index 610b0eb77..462a8a370 100644
--- a/src/dotty/tools/dotc/core/pickling/UnPickler.scala
+++ b/src/dotty/tools/dotc/core/pickling/UnPickler.scala
@@ -120,16 +120,22 @@ object UnPickler {
if (!(denot.flagsUNSAFE is JavaModule)) ensureConstructor(denot.symbol.asClass, decls)
val scalacCompanion = denot.classSymbol.scalacLinkedClass
- if (denot.flagsUNSAFE is Module) {
- val companionClassMethod = ctx.synthesizeCompanionMethod(nme.COMPANION_CLASS_METHOD, scalacCompanion, denot.classSymbol)
+
+ def registerCompanionPair(module: Symbol, claz: Symbol) = {
+ val companionClassMethod = ctx.synthesizeCompanionMethod(nme.COMPANION_CLASS_METHOD, claz, module)
if (companionClassMethod.exists)
companionClassMethod.entered
- } else {
- val companionModuleMethod = ctx.synthesizeCompanionMethod(nme.COMPANION_MODULE_METHOD, scalacCompanion, denot.classSymbol)
+ val companionModuleMethod = ctx.synthesizeCompanionMethod(nme.COMPANION_MODULE_METHOD, module, claz)
if (companionModuleMethod.exists)
companionModuleMethod.entered
}
+ if (denot.flagsUNSAFE is Module) {
+ registerCompanionPair(denot.classSymbol, scalacCompanion)
+ } else {
+ registerCompanionPair(scalacCompanion, denot.classSymbol)
+ }
+
denot.info = ClassInfo(denot.owner.thisType, denot.classSymbol, parentRefs, decls, ost)
}
}