summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/Iterator.scala
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2011-07-13 11:39:16 +0000
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2011-07-13 11:39:16 +0000
commitc849eb7c7dbb900315cc36c990f22efaf7019d60 (patch)
tree10d3998577d85a204786f536b9e7b58d67d41719 /src/library/scala/collection/Iterator.scala
parent8a0d130537be8c3716ab9191d84c53d39aaa1804 (diff)
downloadscala-c849eb7c7dbb900315cc36c990f22efaf7019d60.tar.gz
scala-c849eb7c7dbb900315cc36c990f22efaf7019d60.tar.bz2
scala-c849eb7c7dbb900315cc36c990f22efaf7019d60.zip
Get rid of structural type in Iterator.scala
Implementation of Iterator.scala defined a structural type by mistake. By naming a class we get rid of that structural type. Fixes #4791. No review.
Diffstat (limited to 'src/library/scala/collection/Iterator.scala')
-rw-r--r--src/library/scala/collection/Iterator.scala10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/library/scala/collection/Iterator.scala b/src/library/scala/collection/Iterator.scala
index 0fc37966da..8880127a3d 100644
--- a/src/library/scala/collection/Iterator.scala
+++ b/src/library/scala/collection/Iterator.scala
@@ -507,7 +507,14 @@ trait Iterator[+A] extends TraversableOnce[A] {
*/
def span(p: A => Boolean): (Iterator[A], Iterator[A]) = {
val self = buffered
- val leading = new Iterator[A] {
+
+ /**
+ * Giving a name to following iterator (as opposed to trailing) because
+ * anonymous class is represented as a structural type that trailing
+ * iterator is referring (the finish() method) and thus triggering
+ * handling of structural calls. It's not what's intended here.
+ */
+ class Leading extends Iterator[A] {
private var isDone = false
val lookahead = new mutable.Queue[A]
def advance() = {
@@ -528,6 +535,7 @@ trait Iterator[+A] extends TraversableOnce[A] {
lookahead.dequeue()
}
}
+ val leading = new Leading
val trailing = new Iterator[A] {
private lazy val it = {
leading.finish()