Skip to content

Commit 611f240

Browse files
authored
Update method signatures in RedBlackTree to accept correct Iterators (#24085)
Fix errors in #24081 Take `immutable.TreeSet.from` as an example, the parameter is tracked: `it: IterableOnce[E]^`. After pattern match, `ss` should be `SortedSet[E]^{it}`. Calling `iterator` will return an `Interator^{ss}`, which is tracked as well. However, `fromOrderedKeys` only accepts non-tracked `Interator`, and causes error. The fix updates`fromOrderedKeys` and `fromOrderedEntries`.
2 parents 0ec9468 + 7e007a8 commit 611f240

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

library/src/scala/collection/immutable/RedBlackTree.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ private[collection] object RedBlackTree {
940940
}
941941

942942
/** Build a Tree suitable for a TreeSet from an ordered sequence of keys */
943-
def fromOrderedKeys[A](xs: Iterator[A], size: Int): Tree[A, Null] = {
943+
def fromOrderedKeys[A](xs: Iterator[A]^, size: Int): Tree[A, Null] = {
944944
val maxUsedDepth = 32 - Integer.numberOfLeadingZeros(size) // maximum depth of non-leaf nodes
945945
def f(level: Int, size: Int): Tree[A, Null] = size match {
946946
case 0 => null
@@ -956,7 +956,7 @@ private[collection] object RedBlackTree {
956956
}
957957

958958
/** Build a Tree suitable for a TreeMap from an ordered sequence of key/value pairs */
959-
def fromOrderedEntries[A, B](xs: Iterator[(A, B)], size: Int): Tree[A, B] = {
959+
def fromOrderedEntries[A, B](xs: Iterator[(A, B)]^, size: Int): Tree[A, B] = {
960960
val maxUsedDepth = 32 - Integer.numberOfLeadingZeros(size) // maximum depth of non-leaf nodes
961961
def f(level: Int, size: Int): Tree[A, B] = size match {
962962
case 0 => null

library/src/scala/collection/mutable/RedBlackTree.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,7 @@ private[collection] object RedBlackTree {
605605
// building
606606

607607
/** Build a Tree suitable for a TreeSet from an ordered sequence of keys */
608-
def fromOrderedKeys[A](xs: Iterator[A], size: Int): Tree[A, Null] = {
608+
def fromOrderedKeys[A](xs: Iterator[A]^, size: Int): Tree[A, Null] = {
609609
val maxUsedDepth = 32 - Integer.numberOfLeadingZeros(size) // maximum depth of non-leaf nodes
610610
def f(level: Int, size: Int): Node[A, Null] = size match {
611611
case 0 => null
@@ -624,7 +624,7 @@ private[collection] object RedBlackTree {
624624
}
625625

626626
/** Build a Tree suitable for a TreeMap from an ordered sequence of key/value pairs */
627-
def fromOrderedEntries[A, B](xs: Iterator[(A, B)], size: Int): Tree[A, B] = {
627+
def fromOrderedEntries[A, B](xs: Iterator[(A, B)]^, size: Int): Tree[A, B] = {
628628
val maxUsedDepth = 32 - Integer.numberOfLeadingZeros(size) // maximum depth of non-leaf nodes
629629
def f(level: Int, size: Int): Node[A, B] = size match {
630630
case 0 => null

0 commit comments

Comments
 (0)