diff options
author | Martin Odersky <odersky@gmail.com> | 2013-12-26 12:29:53 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-12-26 12:29:53 +0100 |
commit | 90eacc618057747e60be994e981c24f4229620d4 (patch) | |
tree | a0544e416684a8da618d5e369e09922ca8f3a0bf /src/dotty/tools/dotc/core/pickling/UnPickler.scala | |
parent | 30a587d46df65825dd3fd164f35aa27cc91c633e (diff) | |
download | dotty-90eacc618057747e60be994e981c24f4229620d4.tar.gz dotty-90eacc618057747e60be994e981c24f4229620d4.tar.bz2 dotty-90eacc618057747e60be994e981c24f4229620d4.zip |
Fixing unpickling of refinements.
Diffstat (limited to 'src/dotty/tools/dotc/core/pickling/UnPickler.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/pickling/UnPickler.scala | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/pickling/UnPickler.scala b/src/dotty/tools/dotc/core/pickling/UnPickler.scala index e7a87b220..5adc5ba64 100644 --- a/src/dotty/tools/dotc/core/pickling/UnPickler.scala +++ b/src/dotty/tools/dotc/core/pickling/UnPickler.scala @@ -430,13 +430,16 @@ class UnPickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClassRoot: } def finishSym(sym: Symbol): Symbol = { - if (sym.owner.isClass && + val owner = sym.owner + if (owner.isClass && !( isUnpickleRoot(sym) || (sym is (ModuleClass | Scala2Existential)) - || ((sym is TypeParam) && !sym.owner.isClass) || isRefinementClass(sym) ) - ) sym.owner.asClass.enter(sym, symScope(sym.owner)) + ) + owner.asClass.enter(sym, symScope(owner)) + else if (isRefinementClass(owner)) + symScope(owner).asInstanceOf[MutableScope].enter(sym) sym } |