Skip to content

Commit 5ebbfdb

Browse files
author
Aleksandar Prokopec
committed
Fix for si-5577.
1 parent f146d58 commit 5ebbfdb

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

src/library/scala/collection/mutable/Builder.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ trait Builder[-Elem, +To] extends Growable[Elem] {
100100
def +=(x: Elem): this.type = { self += x; this }
101101
def clear() = self.clear()
102102
override def ++=(xs: TraversableOnce[Elem]): this.type = { self ++= xs; this }
103+
override def sizeHint(size: Int) = self.sizeHint(size)
104+
override def sizeHintBounded(size: Int, boundColl: TraversableLike[_, _]) = self.sizeHintBounded(size, boundColl)
103105
def result: NewTo = f(self.result)
104106
}
105107
}

test/files/run/t5577.check

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Received a size hint: 10
2+
0
3+
1
4+
2
5+
3
6+
4
7+
5
8+
6
9+
7
10+
8
11+
9

test/files/run/t5577.scala

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
3+
4+
import collection._
5+
6+
7+
8+
object Test {
9+
10+
class AlarmingBuffer[T] extends mutable.ArrayBuffer[T] {
11+
override def sizeHint(x: Int) {
12+
println("Received a size hint: " + x)
13+
super.sizeHint(x)
14+
}
15+
}
16+
17+
def main(args: Array[String]) {
18+
val iteratorBuilder = (new AlarmingBuffer[Int]) mapResult {
19+
res => res.iterator
20+
}
21+
22+
iteratorBuilder.sizeHint(10)
23+
iteratorBuilder ++= (0 until 10)
24+
iteratorBuilder.result.foreach(println)
25+
}
26+
27+
}

0 commit comments

Comments
 (0)