aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-04-05 16:40:09 +0200
committerMartin Odersky <odersky@gmail.com>2013-04-05 16:40:09 +0200
commit859840dd0662a12fbc1ba470438eca779b08ed89 (patch)
tree82b53c8002e50350b974830331513fdc272411a2 /src/dotty/tools/dotc
parentbf757cac8bce062ebf1a85309d22f60620277988 (diff)
downloaddotty-859840dd0662a12fbc1ba470438eca779b08ed89.tar.gz
dotty-859840dd0662a12fbc1ba470438eca779b08ed89.tar.bz2
dotty-859840dd0662a12fbc1ba470438eca779b08ed89.zip
Fix to array erasure.
Now treats arrays of value classes correctly.
Diffstat (limited to 'src/dotty/tools/dotc')
-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)