aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/pickling/UnPickler.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-01-01 14:47:52 +0100
committerMartin Odersky <odersky@gmail.com>2015-01-01 14:49:33 +0100
commit95f74c2a999b20ee5f6ddbe6e14511872e8c227f (patch)
tree40ff60221d4a9e9ba8b9a4ea01b11eec036903a2 /src/dotty/tools/dotc/core/pickling/UnPickler.scala
parente3a43806a2b5b17982e942a82cabe139c09d971e (diff)
downloaddotty-95f74c2a999b20ee5f6ddbe6e14511872e8c227f.tar.gz
dotty-95f74c2a999b20ee5f6ddbe6e14511872e8c227f.tar.bz2
dotty-95f74c2a999b20ee5f6ddbe6e14511872e8c227f.zip
Provide the correct levels for RefinedThis types.
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, 3 insertions, 11 deletions
diff --git a/src/dotty/tools/dotc/core/pickling/UnPickler.scala b/src/dotty/tools/dotc/core/pickling/UnPickler.scala
index 728048700..2bea977f7 100644
--- a/src/dotty/tools/dotc/core/pickling/UnPickler.scala
+++ b/src/dotty/tools/dotc/core/pickling/UnPickler.scala
@@ -158,9 +158,6 @@ class UnPickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClassRoot:
/** A map from symbols to their associated `decls` scopes */
private val symScopes = mutable.AnyRefMap[Symbol, Scope]()
- /** A map from refinement classes to their associated refinement types */
- private val refinementTypes = mutable.AnyRefMap[Symbol, RefinedType]()
-
protected def errorBadSignature(msg: String, original: Option[RuntimeException] = None)(implicit ctx: Context) = {
val ex = new BadSignature(
sm"""error reading Scala signature of $classRoot from $source:
@@ -612,9 +609,7 @@ class UnPickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClassRoot:
case NOPREFIXtpe =>
NoPrefix
case THIStpe =>
- val cls = readSymbolRef().asClass
- if (isRefinementClass(cls)) RefinedThis(refinementTypes(cls))
- else cls.thisType
+ readSymbolRef().thisType
case SINGLEtpe =>
val pre = readTypeRef()
val sym = readDisambiguatedSymbolRef(_.info.isParameterless)
@@ -666,11 +661,8 @@ class UnPickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClassRoot:
if (decls.isEmpty) parent
else {
def addRefinement(tp: Type, sym: Symbol) =
- RefinedType(tp, sym.name, sym.info)
- val result = (parent /: decls.toList)(addRefinement).asInstanceOf[RefinedType]
- assert(!refinementTypes.isDefinedAt(clazz), clazz + "/" + decls)
- refinementTypes(clazz) = result
- result
+ RefinedType(tp, sym.name, ctx.thisToRefinedThis(_, clazz, 0)(sym.info))
+ (parent /: decls.toList)(addRefinement).asInstanceOf[RefinedType]
}
case CLASSINFOtpe =>
val clazz = readSymbolRef()