Skip to content

Commit abab089

Browse files
committed
review part I
1 parent f10f04d commit abab089

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

library/src/scala/collection/Iterator.scala

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,11 @@ trait Iterator[+A] extends IterableOnce[A] with IterableOnceOps[A, Iterator, Ite
129129
hd
130130
}
131131

132-
override def knownSize = self.knownSize + (if (hdDefined) 1 else 0)
132+
override def knownSize = {
133+
val thisSize = self.knownSize
134+
if (thisSize >= 0 && hdDefined) thisSize + 1
135+
else thisSize
136+
}
133137

134138
def hasNext =
135139
hdDefined || self.hasNext
@@ -811,7 +815,7 @@ trait Iterator[+A] extends IterableOnce[A] with IterableOnceOps[A, Iterator, Ite
811815

812816
def zipWithIndex: Iterator[(A, Int)] = new AbstractIterator[(A, Int)] {
813817
var idx = 0
814-
override def knownSize = -1 max self.knownSize
818+
override def knownSize = self.knownSize
815819
def hasNext = self.hasNext
816820
def next() = {
817821
val ret = (self.next(), idx)
@@ -1201,7 +1205,11 @@ object Iterator extends IterableFactory[Iterator] {
12011205
override def knownSize: Int = {
12021206
val size = underlying.knownSize
12031207
if (size < 0) -1
1204-
else remaining min ((size - dropping) max 0)
1208+
else {
1209+
val dropSize = 0 max (size - dropping)
1210+
if (unbounded) dropSize
1211+
else remaining min dropSize
1212+
}
12051213
}
12061214
def hasNext = { skip(); remaining != 0 && underlying.hasNext }
12071215
def next() = {

0 commit comments

Comments
 (0)