@@ -165,11 +165,11 @@ object Iterator {
165
165
/** Avoid stack overflows when applying ++ to lots of iterators by
166
166
* flattening the unevaluated iterators out into a vector of closures.
167
167
*/
168
- private [scala] final class ConcatIterator [+ A ](initial : Vector [() => Iterator [A ]]) extends Iterator [A ] {
169
- // current set to null when all iterators are exhausted
170
- private [this ] var current : Iterator [A ] = Iterator .empty
168
+ private [scala] final class ConcatIterator [+ A ](private [this ] var current : Iterator [A ], initial : Vector [() => Iterator [A ]]) extends Iterator [A ] {
169
+ @ deprecated def this (initial : Vector [() => Iterator [A ]]) = this (Iterator .empty, initial) // for binary compatibility
171
170
private [this ] var queue : Vector [() => Iterator [A ]] = initial
172
171
// Advance current to the next non-empty iterator
172
+ // current is set to null when all iterators are exhausted
173
173
private [this ] def advance (): Boolean = {
174
174
if (queue.isEmpty) {
175
175
current = null
@@ -185,7 +185,7 @@ object Iterator {
185
185
def next () = if (hasNext) current.next else Iterator .empty.next
186
186
187
187
override def ++ [B >: A ](that : => GenTraversableOnce [B ]): Iterator [B ] =
188
- new ConcatIterator ((() => current) +: ( queue :+ (() => that.toIterator) ))
188
+ new ConcatIterator (current, queue :+ (() => that.toIterator))
189
189
}
190
190
191
191
private [scala] final class JoinIterator [+ A ](lhs : Iterator [A ], that : => GenTraversableOnce [A ]) extends Iterator [A ] {
@@ -194,7 +194,7 @@ object Iterator {
194
194
def next = if (lhs.hasNext) lhs.next else rhs.next
195
195
196
196
override def ++ [B >: A ](that : => GenTraversableOnce [B ]) =
197
- new ConcatIterator (Vector (() => this , () => that.toIterator))
197
+ new ConcatIterator (this , Vector ( () => that.toIterator))
198
198
}
199
199
}
200
200
0 commit comments