Skip to content

Commit 2a4e8cf

Browse files
committed
Re-enable valueTypeNameToJavaType
1 parent eeb58bd commit 2a4e8cf

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,7 @@ class Definitions {
10471047

10481048
// private val unboxedTypeRef = mutable.Map[TypeName, TypeRef]()
10491049
// private val javaTypeToValueTypeRef = mutable.Map[Class[_], TypeRef]()
1050-
// private val valueTypeNameToJavaType = mutable.Map[TypeName, Class[_]]()
1050+
private val valueTypeNamesToJavaType = mutable.Map[TypeName, Class[_]]()
10511051

10521052
private def valueTypeRef(name: String, boxed: TypeRef, jtype: Class[_], enc: Int, tag: Name): TypeRef = {
10531053
val vcls = ctx.requiredClassRef(name)
@@ -1056,7 +1056,7 @@ class Definitions {
10561056
typeTags(vcls.name) = tag
10571057
// unboxedTypeRef(boxed.name) = vcls
10581058
// javaTypeToValueTypeRef(jtype) = vcls
1059-
// valueTypeNameToJavaType(vcls.name) = jtype
1059+
valueTypeNamesToJavaType(vcls.name) = jtype
10601060
vcls
10611061
}
10621062

@@ -1066,6 +1066,10 @@ class Definitions {
10661066
/** The JVM tag for `tp` if it's a primitive, `java.lang.Object` otherwise. */
10671067
def typeTag(tp: Type)(implicit ctx: Context): Name = typeTags(scalaClassName(tp))
10681068

1069+
/** The `Class[_]` of a primitive value type name */
1070+
def valueTypeNameToJavaType(name: TypeName)(implicit ctx: Context): Option[Class[_]] =
1071+
valueTypeNamesToJavaType.get(if (name.firstPart eq nme.scala_) name.lastPart.toTypeName else name)
1072+
10691073
type PrimitiveClassEnc = Int
10701074

10711075
val ByteEnc = 2

compiler/src/dotty/tools/dotc/interpreter/Interpreter.scala

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,16 +110,10 @@ class Interpreter(implicit ctx: Context) {
110110
/** List of classes of the parameters of the signature of `sym` */
111111
private def paramsSig(sym: Symbol): List[Class[_]] = {
112112
sym.signature.paramsSig.map { param =>
113-
val paramString = param.toString
114-
if (paramString == defn.BooleanClass.showFullName) classOf[Boolean]
115-
else if (paramString == defn.ByteClass.showFullName) classOf[Byte]
116-
else if (paramString == defn.CharClass.showFullName) classOf[Char]
117-
else if (paramString == defn.ShortClass.showFullName) classOf[Short]
118-
else if (paramString == defn.IntClass.showFullName) classOf[Int]
119-
else if (paramString == defn.LongClass.showFullName) classOf[Long]
120-
else if (paramString == defn.DoubleClass.showFullName) classOf[Float]
121-
else if (paramString == defn.DoubleClass.showFullName) classOf[Double]
122-
else classLoader.loadClass(paramString)
113+
defn.valueTypeNameToJavaType(param) match {
114+
case Some(clazz) => clazz
115+
case None => classLoader.loadClass(param.toString)
116+
}
123117
}
124118
}
125119

0 commit comments

Comments
 (0)