diff options
author | Martin Odersky <odersky@gmail.com> | 2006-05-16 10:37:52 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-05-16 10:37:52 +0000 |
commit | 703ba993c311aa8d452608fc94414e2778218fd6 (patch) | |
tree | 20efe4dcbff70308e0b0eca2258a63367b14aa5b | |
parent | bc4bd901b1372716e8071e64d0d2c9e065597e99 (diff) | |
download | scala-703ba993c311aa8d452608fc94414e2778218fd6.tar.gz scala-703ba993c311aa8d452608fc94414e2778218fd6.tar.bz2 scala-703ba993c311aa8d452608fc94414e2778218fd6.zip |
Fixed bug 594
-rw-r--r-- | src/library/scala/runtime/BoxedObjectArray.scala | 9 | ||||
-rw-r--r-- | test/pending/run/subarray.scala | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/library/scala/runtime/BoxedObjectArray.scala b/src/library/scala/runtime/BoxedObjectArray.scala index 3d1b2d8c46..6563e12e4b 100644 --- a/src/library/scala/runtime/BoxedObjectArray.scala +++ b/src/library/scala/runtime/BoxedObjectArray.scala @@ -31,8 +31,13 @@ final class BoxedObjectArray(val value: Array[Object]) extends BoxedArray { override def hashCode(): Int = value.hashCode(); + private def create(length: int): Array[Object] = { + val elemClass = value.getClass().getComponentType() + java.lang.reflect.Array.newInstance(elemClass, length).asInstanceOf[Array[Object]] + } + override def subArray(start: Int, end: Int): Array[Object] = { - val result = new Array[Object](end - start); + val result = create(end - start) Array.copy(value, 0, result, 0, end - start) result } @@ -45,7 +50,7 @@ final class BoxedObjectArray(val value: Array[Object]) extends BoxedArray { if (p(value(i))) { include(i) = true; len = len + 1 } i = i + 1 } - val result = new Array[Object](len); + val result = create(len); len = 0; i = 0; while (len < result.length) { diff --git a/test/pending/run/subarray.scala b/test/pending/run/subarray.scala index 51ec222e0d..b120f47338 100644 --- a/test/pending/run/subarray.scala +++ b/test/pending/run/subarray.scala @@ -1,7 +1,7 @@ object Test { def main(args: Array[String]): Unit = { val array = Array("one", "two", "three") - val firstTwo: Array[String] = array.subArray(0,1) + val firstTwo: Array[String] = array.subArray(0,2) for(val x <- firstTwo) Console.println(x) } |