aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Definitions.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-11-07 16:23:46 +0100
committerMartin Odersky <odersky@gmail.com>2015-11-09 15:45:39 +0100
commitbf38d8cebb81ea42c3de7c9f5bbaddc3ec45fc8a (patch)
treeb2204112b0664d1ec0dfc79735d5a3e69964ebfb /src/dotty/tools/dotc/core/Definitions.scala
parentdfca53ea14970e9071f943ffa6662cb7ce9ed8ca (diff)
downloaddotty-bf38d8cebb81ea42c3de7c9f5bbaddc3ec45fc8a.tar.gz
dotty-bf38d8cebb81ea42c3de7c9f5bbaddc3ec45fc8a.tar.bz2
dotty-bf38d8cebb81ea42c3de7c9f5bbaddc3ec45fc8a.zip
Remove/hide value class maps
Remove unneeded maps and make the ones that are needed private. Reason: Maps indexed with TypeNames are prone to misuse; should be accessed only with names of known primitive classes.
Diffstat (limited to 'src/dotty/tools/dotc/core/Definitions.scala')
-rw-r--r--src/dotty/tools/dotc/core/Definitions.scala29
1 files changed, 13 insertions, 16 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)