summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2009-12-22 14:00:58 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2009-12-22 14:00:58 +0000
commit3a0713b4e092cd768d748ca078ab40cc32068fec (patch)
treef09584753d9feaa5f99125a435f1be9ca90d1a69
parentff1ecb531615bf12dcbe21fe1bbd0d066023cc36 (diff)
downloadscala-3a0713b4e092cd768d748ca078ab40cc32068fec.tar.gz
scala-3a0713b4e092cd768d748ca078ab40cc32068fec.tar.bz2
scala-3a0713b4e092cd768d748ca078ab40cc32068fec.zip
fixed #2548 - reverse, reverseIterator for view...
fixed #2548 - reverse, reverseIterator for views bug. Also - reverseMap for views now should work. review by phaller.
-rw-r--r--src/library/scala/collection/SeqViewLike.scala11
-rw-r--r--test/files/run/ReverseSeqView.scala25
2 files changed, 35 insertions, 1 deletions
diff --git a/src/library/scala/collection/SeqViewLike.scala b/src/library/scala/collection/SeqViewLike.scala
index 66345ed311..1a8cd20013 100644
--- a/src/library/scala/collection/SeqViewLike.scala
+++ b/src/library/scala/collection/SeqViewLike.scala
@@ -117,10 +117,16 @@ trait SeqViewLike[+A,
}
trait Reversed extends Transformed[A] {
- override def iterator: Iterator[A] = self.reverseIterator
+ override def iterator: Iterator[A] = createReversedIterator
override def length: Int = self.length
override def apply(idx: Int): A = self.apply(length - 1 - idx)
override def stringPrefix = self.stringPrefix+"R"
+
+ private def createReversedIterator = {
+ var lst = List[A]()
+ for (elem <- self) lst ::= elem
+ lst.iterator
+ }
}
trait Patched[B >: A] extends Transformed[B] {
@@ -166,6 +172,9 @@ trait SeqViewLike[+A,
override def padTo[B >: A, That](len: Int, elem: B)(implicit bf: CanBuildFrom[This, B, That]): That =
patch(length, fill(len - length)(elem), 0)
+ override def reverseMap[B, That](f: A => B)(implicit bf: CanBuildFrom[This, B, That]): That =
+ reverse.map(f)
+
override def stringPrefix = "SeqView"
}
diff --git a/test/files/run/ReverseSeqView.scala b/test/files/run/ReverseSeqView.scala
new file mode 100644
index 0000000000..8f0ecb13da
--- /dev/null
+++ b/test/files/run/ReverseSeqView.scala
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+object Test extends Application {
+
+ val lstv = List(1, 2, 3).view
+ val lstvr = lstv.reverse
+ lstvr.iterator
+ lstvr.reverse
+ lstvr.reverseIterator
+ lstvr.reverseMap(_ + 1)
+
+}
+
+
+
+
+
+
+
+
+