diff options
author | Martin Odersky <odersky@gmail.com> | 2013-04-05 16:40:09 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-04-05 16:40:09 +0200 |
commit | 859840dd0662a12fbc1ba470438eca779b08ed89 (patch) | |
tree | 82b53c8002e50350b974830331513fdc272411a2 /src/dotty/tools | |
parent | bf757cac8bce062ebf1a85309d22f60620277988 (diff) | |
download | dotty-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')
-rw-r--r-- | src/dotty/tools/dotc/core/transform/Erasure.scala | 5 |
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) |