summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-02-01 14:08:17 +1000
committerJason Zaugg <jzaugg@gmail.com>2016-02-01 14:08:17 +1000
commit7a9e7c52dfc510f1f9fe55c4fbbe1e6a8b38878d (patch)
tree281aec58ef852258b8cc749f441acc7a4e2f6ab5
parenta392b68f073d756eaa6707b9022a6619e38f781a (diff)
parenta01d8399bbe9f3c20a7e2e9ea9c38aefc2e07ff6 (diff)
downloadscala-7a9e7c52dfc510f1f9fe55c4fbbe1e6a8b38878d.tar.gz
scala-7a9e7c52dfc510f1f9fe55c4fbbe1e6a8b38878d.tar.bz2
scala-7a9e7c52dfc510f1f9fe55c4fbbe1e6a8b38878d.zip
Merge pull request #4921 from szeiger/issue/9534
SI-9534 Use BoxedUnit in all cases for creating Array[Unit]
-rw-r--r--src/library/scala/reflect/Manifest.scala3
-rw-r--r--test/junit/scala/reflect/ClassTag.scala12
2 files changed, 14 insertions, 1 deletions
diff --git a/src/library/scala/reflect/Manifest.scala b/src/library/scala/reflect/Manifest.scala
index 4ff49c44d0..e099853463 100644
--- a/src/library/scala/reflect/Manifest.scala
+++ b/src/library/scala/reflect/Manifest.scala
@@ -157,6 +157,9 @@ object ManifestFactory {
override def newArray(len: Int): Array[Unit] = new Array[Unit](len)
override def newWrappedArray(len: Int): WrappedArray[Unit] = new WrappedArray.ofUnit(new Array[Unit](len))
override def newArrayBuilder(): ArrayBuilder[Unit] = new ArrayBuilder.ofUnit()
+ override protected def arrayClass[T](tp: Class[_]): Class[Array[T]] =
+ if (tp eq runtimeClass) classOf[Array[scala.runtime.BoxedUnit]].asInstanceOf[Class[Array[T]]]
+ else super.arrayClass(tp)
private def readResolve(): Any = Manifest.Unit
}
diff --git a/test/junit/scala/reflect/ClassTag.scala b/test/junit/scala/reflect/ClassTag.scala
index 90cc981fc1..49022dccda 100644
--- a/test/junit/scala/reflect/ClassTag.scala
+++ b/test/junit/scala/reflect/ClassTag.scala
@@ -26,4 +26,14 @@ class ClassTagTest {
@Test def checkDouble = assertTrue(checkNotInt[Double] (0.toDouble))
@Test def checkBoolean = assertTrue(checkNotInt[Boolean](false))
@Test def checkUnit = assertTrue(checkNotInt[Unit] ({}))
-} \ No newline at end of file
+
+ @Test def t9534: Unit = {
+ val ct = implicitly[scala.reflect.ClassTag[Unit]]
+ val a1 = ct.newArray(1)
+ a1(0) = ()
+ val a2 = ct.wrap.newArray(1)
+ a2(0) = a1
+ val a3 = ct.newArray2(1)
+ a3(0) = a1
+ }
+}