summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-05-16 10:37:52 +0000
committerMartin Odersky <odersky@gmail.com>2006-05-16 10:37:52 +0000
commit703ba993c311aa8d452608fc94414e2778218fd6 (patch)
tree20efe4dcbff70308e0b0eca2258a63367b14aa5b
parentbc4bd901b1372716e8071e64d0d2c9e065597e99 (diff)
downloadscala-703ba993c311aa8d452608fc94414e2778218fd6.tar.gz
scala-703ba993c311aa8d452608fc94414e2778218fd6.tar.bz2
scala-703ba993c311aa8d452608fc94414e2778218fd6.zip
Fixed bug 594
-rw-r--r--src/library/scala/runtime/BoxedObjectArray.scala9
-rw-r--r--test/pending/run/subarray.scala2
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)
}