aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/core/Definitions.scala29
-rw-r--r--src/dotty/tools/dotc/transform/TypeTestsCasts.scala2
2 files changed, 14 insertions, 17 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala
index 24798f8e2..4fd5bc684 100644
--- a/src/dotty/tools/dotc/core/Definitions.scala
+++ b/src/dotty/tools/dotc/core/Definitions.scala
@@ -693,29 +693,26 @@ class Definitions {
lazy val ScalaBoxedTypeRefs = ScalaValueTypes map (t => boxedTypeRef(t.name))
def ScalaBoxedClasses = ScalaBoxedTypeRefs.map(_.symbol)
- private[this] val _boxedTypeRef = mutable.Map[TypeName, TypeRef]()
- private[this] val _unboxedTypeRef = mutable.Map[TypeName, TypeRef]()
+ private val boxedTypeRef = mutable.Map[TypeName, TypeRef]()
+ private val valueTypeEnc = mutable.Map[TypeName, PrimitiveClassEnc]()
- private[this] val _javaTypeToValueTypeRef = mutable.Map[Class[_], TypeRef]()
- private[this] val _valueTypeRefToJavaType = mutable.Map[TypeName, Class[_]]()
- private[this] val _valueTypeEnc = mutable.Map[TypeName, PrimitiveClassEnc]()
-
- val boxedTypeRef: collection.Map[TypeName, TypeRef] = _boxedTypeRef
- val unboxedTypeRef: collection.Map[TypeName, TypeRef] = _unboxedTypeRef
- val javaTypeToValueTypeRef: collection.Map[Class[_], TypeRef] = _javaTypeToValueTypeRef
- val valueTypeRefToJavaType: collection.Map[TypeName, Class[_]] = _valueTypeRefToJavaType
- val valueTypeEnc: collection.Map[TypeName, Int] = _valueTypeEnc
+// private val unboxedTypeRef = mutable.Map[TypeName, TypeRef]()
+// private val javaTypeToValueTypeRef = mutable.Map[Class[_], TypeRef]()
+// private val valueTypeNameToJavaType = mutable.Map[TypeName, Class[_]]()
private def valueTypeRef(name: String, boxed: TypeRef, jtype: Class[_], enc: Int): TypeRef = {
val vcls = ctx.requiredClassRef(name)
- _unboxedTypeRef(boxed.name) = vcls
- _boxedTypeRef(vcls.name) = boxed
- _javaTypeToValueTypeRef(jtype) = vcls
- _valueTypeRefToJavaType(vcls.name) = jtype
- _valueTypeEnc(vcls.name) = enc
+ boxedTypeRef(vcls.name) = boxed
+ valueTypeEnc(vcls.name) = enc
+// unboxedTypeRef(boxed.name) = vcls
+// javaTypeToValueTypeRef(jtype) = vcls
+// valueTypeNameToJavaType(vcls.name) = jtype
vcls
}
+ /** The type of the boxed class corresponding to primitive value type `tp`. */
+ def boxedType(tp: Type)(implicit ctx: Context): TypeRef = boxedTypeRef.apply(scalaClassName(tp))
+
def wrapArrayMethodName(elemtp: Type): TermName = {
val cls = elemtp.classSymbol
if (cls.isPrimitiveValueClass) nme.wrapXArray(cls.name)
diff --git a/src/dotty/tools/dotc/transform/TypeTestsCasts.scala b/src/dotty/tools/dotc/transform/TypeTestsCasts.scala
index 7f0a6834b..035cbb51b 100644
--- a/src/dotty/tools/dotc/transform/TypeTestsCasts.scala
+++ b/src/dotty/tools/dotc/transform/TypeTestsCasts.scala
@@ -50,7 +50,7 @@ trait TypeTestsCasts {
Literal(Constant(true)) withPos tree.pos
else if (argCls.isPrimitiveValueClass)
if (qualCls.isPrimitiveValueClass) Literal(Constant(qualCls == argCls)) withPos tree.pos
- else transformIsInstanceOf(expr, defn.boxedTypeRef(argCls.asClass.name))
+ else transformIsInstanceOf(expr, defn.boxedType(argCls.typeRef))
else argType.dealias match {
case _: SingletonType =>
val cmpOp = if (argType derivesFrom defn.AnyValClass) defn.Any_equals else defn.Object_eq