aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/pickling/UnPickler.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-12-26 12:29:53 +0100
committerMartin Odersky <odersky@gmail.com>2013-12-26 12:29:53 +0100
commit90eacc618057747e60be994e981c24f4229620d4 (patch)
treea0544e416684a8da618d5e369e09922ca8f3a0bf /src/dotty/tools/dotc/core/pickling/UnPickler.scala
parent30a587d46df65825dd3fd164f35aa27cc91c633e (diff)
downloaddotty-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.scala9
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
}