diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-30 17:04:09 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-30 17:04:09 +0200 |
commit | 34f165080530d0b4817235b161f89e10d6763da4 (patch) | |
tree | e2eff3f755a297db6942593103748f6bd738ff8b /src/dotty/tools/dotc/core/pickling/UnPickler.scala | |
parent | 14e0f720534397429444fb88d1125e19323dfa4f (diff) | |
download | dotty-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.scala | 14 |
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) } } |