diff options
-rw-r--r-- | src/library/scala/collection/mutable/IndexedSeqView.scala | 2 | ||||
-rw-r--r-- | test/files/run/arrayview.scala | 11 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/library/scala/collection/mutable/IndexedSeqView.scala b/src/library/scala/collection/mutable/IndexedSeqView.scala index 15306b727a..84b87490fd 100644 --- a/src/library/scala/collection/mutable/IndexedSeqView.scala +++ b/src/library/scala/collection/mutable/IndexedSeqView.scala @@ -38,13 +38,11 @@ self => trait Transformed[B] extends IndexedSeqView[B, Coll] with super.Transformed[B] { def update(idx: Int, elem: B): Unit - override def length = self.length override def toString = viewToString } // pre: until <= self.length trait Sliced extends super.Sliced with Transformed[A] { - override def length = endpoints.width def update(idx: Int, elem: A) = if (idx + from < until) self.update(idx + from, elem) else throw new IndexOutOfBoundsException(idx.toString) diff --git a/test/files/run/arrayview.scala b/test/files/run/arrayview.scala new file mode 100644 index 0000000000..97e840f5e9 --- /dev/null +++ b/test/files/run/arrayview.scala @@ -0,0 +1,11 @@ +object Test { + def f = (1 to 100).toArray.view + + def main(args: Array[String]): Unit = { + val xs = (f filter (_ < 50)).reverse.filter(_ % 2 == 0).map(_ / 2).flatMap(x => Array(1, x)) + assert(xs.size == 48) + val ys = xs.toArray + assert(ys.size == 48) + assert(xs.sum == ys.sum) + } +} |