summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLex Spoon <lex@lexspoon.org>2008-03-09 14:58:33 +0000
committerLex Spoon <lex@lexspoon.org>2008-03-09 14:58:33 +0000
commitd817beea39b06c0b55fee8fa2b847b30dbe7c8c7 (patch)
tree8aff8f81864e73f5a3b54e25b4abce267f213bdb
parent6131229601dd780870c524a870491930ae57d7f9 (diff)
downloadscala-d817beea39b06c0b55fee8fa2b847b30dbe7c8c7.tar.gz
scala-d817beea39b06c0b55fee8fa2b847b30dbe7c8c7.tar.bz2
scala-d817beea39b06c0b55fee8fa2b847b30dbe7c8c7.zip
Array.zip supports arrays of different lengths.
-rw-r--r--src/library/scala/runtime/BoxedArray.scala4
-rw-r--r--test/files/run/arrays.check2
-rw-r--r--test/files/run/arrays.scala12
3 files changed, 14 insertions, 4 deletions
diff --git a/src/library/scala/runtime/BoxedArray.scala b/src/library/scala/runtime/BoxedArray.scala
index d0555e8e62..f3193ec017 100644
--- a/src/library/scala/runtime/BoxedArray.scala
+++ b/src/library/scala/runtime/BoxedArray.scala
@@ -99,9 +99,7 @@ abstract class BoxedArray extends Array.Array0[Any] {
final override def ++[b >: Any](that: Iterable[b]): Array[b] = super.++(that).toArray
final def zip[b](that: Array[b]): Array[Tuple2[Any,b]] = {
- val len = length
- if(len != that.length)
- throw new Error("zipping arrays of different length")
+ val len = length min that.length
val result = new Array[Tuple2[Any,b]](len)
var i = 0
while (i < len) {
diff --git a/test/files/run/arrays.check b/test/files/run/arrays.check
index 8a0c57deae..a649c9b4f8 100644
--- a/test/files/run/arrays.check
+++ b/test/files/run/arrays.check
@@ -1 +1 @@
-checks: 2300
+checks: 2301
diff --git a/test/files/run/arrays.scala b/test/files/run/arrays.scala
index 5fcc5e6614..927112d851 100644
--- a/test/files/run/arrays.scala
+++ b/test/files/run/arrays.scala
@@ -336,6 +336,14 @@ object Test {
}
//##########################################################################
+ // Miscellaneous checks
+ def checkZip(): Unit = {
+ val zipped = Array("a", "b", "c").zip(Array(1, 2))
+ val expected = Array(("a",1), ("b",2))
+ check(zipped sameElements expected, zipped.toList, expected.toList)
+ }
+
+ //##########################################################################
// Arrays
val uarray: Array[Unit ] = Array(u0, u1);
@@ -903,6 +911,10 @@ object Test {
//######################################################################
+ checkZip()
+
+ //######################################################################
+
println("checks: " + checks)
//######################################################################