diff options
author | VladimirNik <vladimir.nikolaev9@gmail.com> | 2015-11-16 14:55:42 +0300 |
---|---|---|
committer | VladimirNik <vladimir.nikolaev9@gmail.com> | 2015-11-17 22:04:24 +0300 |
commit | 9c30c9b13d2eb95f4d86368ed27cf7e63e468dee (patch) | |
tree | f7ba509fcd671b8c6ada06b23afb8148daced636 /src/dotty/tools/dotc/core | |
parent | eefa6112cc2c9e26dfd22bbc7532332d71aa6b43 (diff) | |
download | dotty-9c30c9b13d2eb95f4d86368ed27cf7e63e468dee.tar.gz dotty-9c30c9b13d2eb95f4d86368ed27cf7e63e468dee.tar.bz2 dotty-9c30c9b13d2eb95f4d86368ed27cf7e63e468dee.zip |
Links between companions after unpickling are added
Diffstat (limited to 'src/dotty/tools/dotc/core')
-rw-r--r-- | src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala | 10 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala | 13 |
2 files changed, 11 insertions, 12 deletions
diff --git a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index e76b2e764..552d931d7 100644 --- a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -588,9 +588,15 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { sym.info = readType() ValDef(sym.asTerm, readRhs(localCtx)) case TYPEDEF | TYPEPARAM => - if (sym.isClass) + if (sym.isClass) { + val companion = sym.scalacLinkedClass + if (companion != NoSymbol) { + import transform.SymUtils._ + if (sym is Flags.ModuleClass) sym.registerCompanionMethod(nme.COMPANION_CLASS_METHOD, companion) + else sym.registerCompanionMethod(nme.COMPANION_MODULE_METHOD, companion) + } ta.assignType(untpd.TypeDef(sym.name.asTypeName, readTemplate(localCtx)), sym) - else { + } else { sym.info = readType() TypeDef(sym.asType) } diff --git a/src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala b/src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala index d58122f2d..d14423b7b 100644 --- a/src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala +++ b/src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala @@ -117,17 +117,10 @@ object Scala2Unpickler { val scalacCompanion = denot.classSymbol.scalacLinkedClass def registerCompanionPair(module: Symbol, claz: Symbol) = { - def registerCompanionMethod(name: Name, target: Symbol, owner: Symbol) = { - if (!owner.unforcedDecls.lookup(name).exists) { - val companionMethod = ctx.synthesizeCompanionMethod(name, target, owner) - if (companionMethod.exists) { - companionMethod.entered - } - } - } - registerCompanionMethod(nme.COMPANION_CLASS_METHOD, claz, module) + import transform.SymUtils._ + module.registerCompanionMethod(nme.COMPANION_CLASS_METHOD, claz) if (claz.isClass) { - registerCompanionMethod(nme.COMPANION_MODULE_METHOD, module, claz) + claz.registerCompanionMethod(nme.COMPANION_MODULE_METHOD, module) } } |