diff options
author | Tiark Rompf <tiark.rompf@epfl.ch> | 2010-03-16 23:06:10 +0000 |
---|---|---|
committer | Tiark Rompf <tiark.rompf@epfl.ch> | 2010-03-16 23:06:10 +0000 |
commit | c2a9a308cce58d1a1fec703235cdce4e7438e0a0 (patch) | |
tree | cd9b5931cfe8c33a1e089778a44b6ecbbc029dc7 /src/library | |
parent | 704aa0362f48c26f3cf0b166d3a64c75f5387e8b (diff) | |
download | scala-c2a9a308cce58d1a1fec703235cdce4e7438e0a0.tar.gz scala-c2a9a308cce58d1a1fec703235cdce4e7438e0a0.tar.bz2 scala-c2a9a308cce58d1a1fec703235cdce4e7438e0a0.zip |
closes #3112. no review.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/collection/immutable/Vector.scala | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/library/scala/collection/immutable/Vector.scala b/src/library/scala/collection/immutable/Vector.scala index 1326768090..6fb2aee054 100644 --- a/src/library/scala/collection/immutable/Vector.scala +++ b/src/library/scala/collection/immutable/Vector.scala @@ -108,34 +108,38 @@ override def companion: GenericCompanion[Vector] = Vector } override def take(n: Int): Vector[A] = { - if (n < 0) throw new IllegalArgumentException(n.toString) - if (startIndex + n < endIndex) { + if (n <= 0) + Vector.empty + else if (startIndex + n < endIndex) dropBack0(startIndex + n) - } else + else this } override def drop(n: Int): Vector[A] = { - if (n < 0) throw new IllegalArgumentException(n.toString) - if (startIndex + n < endIndex) { + if (n <= 0) + this + else if (startIndex + n < endIndex) dropFront0(startIndex + n) - } else + else Vector.empty } override def takeRight(n: Int): Vector[A] = { - if (n < 0) throw new IllegalArgumentException(n.toString) - if (endIndex - n > startIndex) { + if (n <= 0) + Vector.empty + else if (endIndex - n > startIndex) dropFront0(endIndex - n) - } else + else this } override def dropRight(n: Int): Vector[A] = { - if (n < 0) throw new IllegalArgumentException(n.toString) - if (endIndex - n > startIndex) { + if (n <= 0) + this + else if (endIndex - n > startIndex) dropBack0(endIndex - n) - } else + else Vector.empty } @@ -843,6 +847,7 @@ private[immutable] trait VectorPointer[T] { final def copyOf(a: Array[AnyRef]) = { //println("copy") + if (a eq null) println ("NULL") val b = new Array[AnyRef](a.length) Platform.arraycopy(a, 0, b, 0, a.length) b |