aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/core/transform/Erasure.scala5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/transform/Erasure.scala b/src/dotty/tools/dotc/core/transform/Erasure.scala
index c55719995..661a88035 100644
--- a/src/dotty/tools/dotc/core/transform/Erasure.scala
+++ b/src/dotty/tools/dotc/core/transform/Erasure.scala
@@ -67,9 +67,10 @@ object Erasure {
def eraseArray(tp: RefinedType)(implicit ctx: Context) = {
val (n, elemtp) = tp.splitArray
- if (elemtp <:< defn.NullType)
+ val elemCls = elemtp.classSymbol
+ if (elemCls.isSubClass(defn.NullClass))
defn.ObjectArrayType
- else if (elemtp <:< defn.ObjectType)
+ else if (elemCls.isSubClass(defn.ObjectClass) || elemCls.isPrimitiveValueClass)
(erasure(elemtp) /: (0 until n))((erased, _) =>
defn.ArrayType.appliedTo(erased))
else if (elemtp.typeSymbol is JavaDefined)