diff options
-rw-r--r-- | src/dotty/tools/dotc/core/Definitions.scala | 29 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/TypeTestsCasts.scala | 2 |
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 |