aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TypeErasure.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-04-03 13:52:36 +0200
committerMartin Odersky <odersky@gmail.com>2016-04-03 13:53:08 +0200
commit079943e3cd18faa034aca3b154314e6f7a94a546 (patch)
treeb5b365b7f9d6f8c810a99f30a6a935af7e5fe1bc /src/dotty/tools/dotc/core/TypeErasure.scala
parentd1ffa3e34610422cc8ec8a90c330cae548fa2ba6 (diff)
downloaddotty-079943e3cd18faa034aca3b154314e6f7a94a546.tar.gz
dotty-079943e3cd18faa034aca3b154314e6f7a94a546.tar.bz2
dotty-079943e3cd18faa034aca3b154314e6f7a94a546.zip
Make erased value type take a TypeRef instead of a ClassSymbol
To address #1198, we need to avoid putting symbols in ErasedValueTypes.
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeErasure.scala')
-rw-r--r--src/dotty/tools/dotc/core/TypeErasure.scala14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/dotty/tools/dotc/core/TypeErasure.scala b/src/dotty/tools/dotc/core/TypeErasure.scala
index a7d825131..88c8d610e 100644
--- a/src/dotty/tools/dotc/core/TypeErasure.scala
+++ b/src/dotty/tools/dotc/core/TypeErasure.scala
@@ -69,17 +69,17 @@ object TypeErasure {
* @param cls The value class symbol
* @param erasedUnderlying The erased type of the single field of the value class
*/
- abstract case class ErasedValueType(cls: ClassSymbol, erasedUnderlying: Type)
+ abstract case class ErasedValueType(tycon: TypeRef, erasedUnderlying: Type)
extends CachedGroundType with ValueType {
- override def computeHash = doHash(cls, erasedUnderlying)
+ override def computeHash = doHash(tycon, erasedUnderlying)
}
- final class CachedErasedValueType(cls: ClassSymbol, erasedUnderlying: Type)
- extends ErasedValueType(cls, erasedUnderlying)
+ final class CachedErasedValueType(tycon: TypeRef, erasedUnderlying: Type)
+ extends ErasedValueType(tycon, erasedUnderlying)
object ErasedValueType {
- def apply(cls: ClassSymbol, erasedUnderlying: Type)(implicit ctx: Context) = {
- unique(new CachedErasedValueType(cls, erasedUnderlying))
+ def apply(tycon: TypeRef, erasedUnderlying: Type)(implicit ctx: Context) = {
+ unique(new CachedErasedValueType(tycon, erasedUnderlying))
}
}
@@ -411,7 +411,7 @@ class TypeErasure(isJava: Boolean, semiEraseVCs: Boolean, isConstructor: Boolean
private def eraseDerivedValueClassRef(tref: TypeRef)(implicit ctx: Context): Type = {
val cls = tref.symbol.asClass
val underlying = underlyingOfValueClass(cls)
- if (underlying.exists) ErasedValueType(cls, valueErasure(underlying))
+ if (underlying.exists) ErasedValueType(tref, valueErasure(underlying))
else NoType
}