Skip to content

Commit c796bcf

Browse files
committed
Address compatibility issues in scala2-library-cc
1 parent d2eea13 commit c796bcf

9 files changed

+718
-28
lines changed

scala2-library-cc/src/scala/Array.scala

Lines changed: 690 additions & 0 deletions
Large diffs are not rendered by default.

scala2-library-cc/src/scala/collection/ArrayOps.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ final class ArrayOps[A](private val xs: Array[A]) extends AnyVal {
590590
val len = xs.length
591591
def boxed = if(len < ArrayOps.MaxStableSortLength) {
592592
val a = xs.clone()
593-
Sorting.stableSort(a)(ord.asInstanceOf[Ordering[A]])
593+
Sorting.stableSort(a)(using ord.asInstanceOf[Ordering[A]])
594594
a
595595
} else {
596596
val a = Array.copyAs[AnyRef](xs, len)(ClassTag.AnyRef)
@@ -1300,7 +1300,7 @@ final class ArrayOps[A](private val xs: Array[A]) extends AnyVal {
13001300
val bb = new ArrayBuilder.ofRef[Array[B]]()(ClassTag[Array[B]](aClass))
13011301
if (xs.length == 0) bb.result()
13021302
else {
1303-
def mkRowBuilder() = ArrayBuilder.make[B](ClassTag[B](aClass.getComponentType))
1303+
def mkRowBuilder() = ArrayBuilder.make[B](using ClassTag[B](aClass.getComponentType))
13041304
val bs = new ArrayOps(asArray(xs(0))).map((x: B) => mkRowBuilder())
13051305
for (xs <- this) {
13061306
var i = 0

scala2-library-cc/src/scala/collection/Factory.scala

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -675,16 +675,16 @@ object ClassTagIterableFactory {
675675
* sound depending on the use of the `ClassTag` by the collection implementation. */
676676
@SerialVersionUID(3L)
677677
class AnyIterableDelegate[CC[_]](delegate: ClassTagIterableFactory[CC]) extends IterableFactory[CC] {
678-
def empty[A]: CC[A] = delegate.empty(ClassTag.Any).asInstanceOf[CC[A]]
679-
def from[A](it: IterableOnce[A]^): CC[A] = delegate.from[Any](it)(ClassTag.Any).asInstanceOf[CC[A]]
680-
def newBuilder[A]: Builder[A, CC[A]] = delegate.newBuilder(ClassTag.Any).asInstanceOf[Builder[A, CC[A]]]
681-
override def apply[A](elems: A*): CC[A] = delegate.apply[Any](elems: _*)(ClassTag.Any).asInstanceOf[CC[A]]
682-
override def iterate[A](start: A, len: Int)(f: A => A): CC[A] = delegate.iterate[A](start, len)(f)(ClassTag.Any.asInstanceOf[ClassTag[A]])
683-
override def unfold[A, S](init: S)(f: S => Option[(A, S)]): CC[A] = delegate.unfold[A, S](init)(f)(ClassTag.Any.asInstanceOf[ClassTag[A]])
684-
override def range[A](start: A, end: A)(implicit i: Integral[A]): CC[A] = delegate.range[A](start, end)(i, ClassTag.Any.asInstanceOf[ClassTag[A]])
685-
override def range[A](start: A, end: A, step: A)(implicit i: Integral[A]): CC[A] = delegate.range[A](start, end, step)(i, ClassTag.Any.asInstanceOf[ClassTag[A]])
686-
override def fill[A](n: Int)(elem: => A): CC[A] = delegate.fill[Any](n)(elem)(ClassTag.Any).asInstanceOf[CC[A]]
687-
override def tabulate[A](n: Int)(f: Int => A): CC[A] = delegate.tabulate[Any](n)(f)(ClassTag.Any).asInstanceOf[CC[A]]
678+
def empty[A]: CC[A] = delegate.empty(using ClassTag.Any).asInstanceOf[CC[A]]
679+
def from[A](it: IterableOnce[A]^): CC[A] = delegate.from[Any](it)(using ClassTag.Any).asInstanceOf[CC[A]]
680+
def newBuilder[A]: Builder[A, CC[A]] = delegate.newBuilder(using ClassTag.Any).asInstanceOf[Builder[A, CC[A]]]
681+
override def apply[A](elems: A*): CC[A] = delegate.apply[Any](elems: _*)(using ClassTag.Any).asInstanceOf[CC[A]]
682+
override def iterate[A](start: A, len: Int)(f: A => A): CC[A] = delegate.iterate[A](start, len)(f)(using ClassTag.Any.asInstanceOf[ClassTag[A]])
683+
override def unfold[A, S](init: S)(f: S => Option[(A, S)]): CC[A] = delegate.unfold[A, S](init)(f)(using ClassTag.Any.asInstanceOf[ClassTag[A]])
684+
override def range[A](start: A, end: A)(implicit i: Integral[A]): CC[A] = delegate.range[A](start, end)(using i, ClassTag.Any.asInstanceOf[ClassTag[A]])
685+
override def range[A](start: A, end: A, step: A)(implicit i: Integral[A]): CC[A] = delegate.range[A](start, end, step)(using i, ClassTag.Any.asInstanceOf[ClassTag[A]])
686+
override def fill[A](n: Int)(elem: => A): CC[A] = delegate.fill[Any](n)(elem)(using ClassTag.Any).asInstanceOf[CC[A]]
687+
override def tabulate[A](n: Int)(f: Int => A): CC[A] = delegate.tabulate[Any](n)(f)(using ClassTag.Any).asInstanceOf[CC[A]]
688688
}
689689
}
690690

scala2-library-cc/src/scala/collection/Iterable.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -985,9 +985,9 @@ trait SortedSetFactoryDefaults[+A,
985985
+WithFilterCC[x] <: IterableOps[x, WithFilterCC, WithFilterCC[x]] with Set[x]] extends SortedSetOps[A @uncheckedVariance, CC, CC[A @uncheckedVariance]] {
986986
self: IterableOps[A, WithFilterCC, _] =>
987987

988-
override protected def fromSpecific(coll: IterableOnce[A @uncheckedVariance]^): CC[A @uncheckedVariance]^{coll} = sortedIterableFactory.from(coll)(ordering)
989-
override protected def newSpecificBuilder: mutable.Builder[A @uncheckedVariance, CC[A @uncheckedVariance]] = sortedIterableFactory.newBuilder[A](ordering)
990-
override def empty: CC[A @uncheckedVariance] = sortedIterableFactory.empty(ordering)
988+
override protected def fromSpecific(coll: IterableOnce[A @uncheckedVariance]^): CC[A @uncheckedVariance]^{coll} = sortedIterableFactory.from(coll)(using ordering)
989+
override protected def newSpecificBuilder: mutable.Builder[A @uncheckedVariance, CC[A @uncheckedVariance]] = sortedIterableFactory.newBuilder[A](using ordering)
990+
override def empty: CC[A @uncheckedVariance] = sortedIterableFactory.empty(using ordering)
991991

992992
override def withFilter(p: A => Boolean): SortedSetOps.WithFilter[A, WithFilterCC, CC]^{p} =
993993
new SortedSetOps.WithFilter[A, WithFilterCC, CC](this, p)
@@ -1040,9 +1040,9 @@ trait SortedMapFactoryDefaults[K, +V,
10401040
+UnsortedCC[x, y] <: Map[x, y]] extends SortedMapOps[K, V, CC, CC[K, V @uncheckedVariance]] with MapOps[K, V, UnsortedCC, CC[K, V @uncheckedVariance]] {
10411041
self: IterableOps[(K, V), WithFilterCC, _] =>
10421042

1043-
override def empty: CC[K, V @uncheckedVariance] = sortedMapFactory.empty(ordering)
1044-
override protected def fromSpecific(coll: IterableOnce[(K, V @uncheckedVariance)]^): CC[K, V @uncheckedVariance]^{coll} = sortedMapFactory.from(coll)(ordering)
1045-
override protected def newSpecificBuilder: mutable.Builder[(K, V @uncheckedVariance), CC[K, V @uncheckedVariance]] = sortedMapFactory.newBuilder[K, V](ordering)
1043+
override def empty: CC[K, V @uncheckedVariance] = sortedMapFactory.empty(using ordering)
1044+
override protected def fromSpecific(coll: IterableOnce[(K, V @uncheckedVariance)]^): CC[K, V @uncheckedVariance]^{coll} = sortedMapFactory.from(coll)(using ordering)
1045+
override protected def newSpecificBuilder: mutable.Builder[(K, V @uncheckedVariance), CC[K, V @uncheckedVariance]] = sortedMapFactory.newBuilder[K, V](using ordering)
10461046

10471047
override def withFilter(p: ((K, V)) => Boolean): collection.SortedMapOps.WithFilter[K, V, WithFilterCC, UnsortedCC, CC]^{p} =
10481048
new collection.SortedMapOps.WithFilter[K, V, WithFilterCC, UnsortedCC, CC](this, p)

scala2-library-cc/src/scala/collection/SortedMap.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,16 +181,16 @@ trait SortedMapOps[K, +V, +CC[X, Y] <: Map[X, Y] with SortedMapOps[X, Y, CC, _],
181181
override def concat[V2 >: V](suffix: IterableOnce[(K, V2)]^): CC[K, V2] = sortedMapFactory.from(suffix match {
182182
case it: Iterable[(K, V2)] => new View.Concat(this, it)
183183
case _ => iterator.concat(suffix.iterator)
184-
})(ordering)
184+
})(using ordering)
185185

186186
/** Alias for `concat` */
187187
@`inline` override final def ++ [V2 >: V](xs: IterableOnce[(K, V2)]^): CC[K, V2] = concat(xs)
188188

189189
@deprecated("Consider requiring an immutable Map or fall back to Map.concat", "2.13.0")
190-
override def + [V1 >: V](kv: (K, V1)): CC[K, V1] = sortedMapFactory.from(new View.Appended(this, kv))(ordering)
190+
override def + [V1 >: V](kv: (K, V1)): CC[K, V1] = sortedMapFactory.from(new View.Appended(this, kv))(using ordering)
191191

192192
@deprecated("Use ++ with an explicit collection argument instead of + with varargs", "2.13.0")
193-
override def + [V1 >: V](elem1: (K, V1), elem2: (K, V1), elems: (K, V1)*): CC[K, V1] = sortedMapFactory.from(new View.Concat(new View.Appended(new View.Appended(this, elem1), elem2), elems))(ordering)
193+
override def + [V1 >: V](elem1: (K, V1), elem2: (K, V1), elems: (K, V1)*): CC[K, V1] = sortedMapFactory.from(new View.Concat(new View.Appended(new View.Appended(this, elem1), elem2), elems))(using ordering)
194194
}
195195

196196
object SortedMapOps {

scala2-library-cc/src/scala/collection/StrictOptimizedSortedMapOps.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ trait StrictOptimizedSortedMapOps[K, +V, +CC[X, Y] <: Map[X, Y] with SortedMapOp
3434
strictOptimizedFlatMap(sortedMapFactory.newBuilder, f)
3535

3636
override def concat[V2 >: V](xs: IterableOnce[(K, V2)]^): CC[K, V2] =
37-
strictOptimizedConcat(xs, sortedMapFactory.newBuilder(ordering))
37+
strictOptimizedConcat(xs, sortedMapFactory.newBuilder(using ordering))
3838

3939
override def collect[K2, V2](pf: PartialFunction[(K, V), (K2, V2)])(implicit @implicitNotFound(SortedMapOps.ordMsg) ordering: Ordering[K2]): CC[K2, V2] =
4040
strictOptimizedCollect(sortedMapFactory.newBuilder, pf)

scala2-library-cc/src/scala/collection/generic/DefaultSerializationProxy.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ private[collection] case object SerializeEnd
7878
trait DefaultSerializable extends Serializable { this: scala.collection.Iterable[_] =>
7979
protected[this] def writeReplace(): AnyRef = {
8080
val f: Factory[Any, Any] = this match {
81-
case it: scala.collection.SortedMap[_, _] => it.sortedMapFactory.sortedMapFactory[Any, Any](it.ordering.asInstanceOf[Ordering[Any]]).asInstanceOf[Factory[Any, Any]]
81+
case it: scala.collection.SortedMap[_, _] => it.sortedMapFactory.sortedMapFactory[Any, Any](using it.ordering.asInstanceOf[Ordering[Any]]).asInstanceOf[Factory[Any, Any]]
8282
case it: scala.collection.Map[_, _] => it.mapFactory.mapFactory[Any, Any].asInstanceOf[Factory[Any, Any]]
83-
case it: scala.collection.SortedSet[_] => it.sortedIterableFactory.evidenceIterableFactory[Any](it.ordering.asInstanceOf[Ordering[Any]])
83+
case it: scala.collection.SortedSet[_] => it.sortedIterableFactory.evidenceIterableFactory[Any](using it.ordering.asInstanceOf[Ordering[Any]])
8484
case it => it.iterableFactory.iterableFactory
8585
}
8686
new DefaultSerializationProxy(f, this)

scala2-library-cc/src/scala/collection/mutable/ArraySeq.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,15 @@ sealed abstract class ArraySeq[T]
4646
override def iterableFactory: scala.collection.SeqFactory[ArraySeq] = ArraySeq.untagged
4747

4848
override protected def fromSpecific(coll: scala.collection.IterableOnce[T]^): ArraySeq[T] = {
49-
val b = ArrayBuilder.make(elemTag).asInstanceOf[ArrayBuilder[T]]
49+
val b = ArrayBuilder.make(using elemTag).asInstanceOf[ArrayBuilder[T]]
5050
val s = coll.knownSize
5151
if(s > 0) b.sizeHint(s)
5252
b ++= coll
5353
ArraySeq.make(b.result())
5454
}
5555
override protected def newSpecificBuilder: Builder[T, ArraySeq[T]] =
56-
ArraySeq.newBuilder[T](elemTag.asInstanceOf[ClassTag[T]]).asInstanceOf[Builder[T, ArraySeq[T]]]
57-
override def empty: ArraySeq[T] = ArraySeq.empty(elemTag.asInstanceOf[ClassTag[T]])
56+
ArraySeq.newBuilder[T](using elemTag.asInstanceOf[ClassTag[T]]).asInstanceOf[Builder[T, ArraySeq[T]]]
57+
override def empty: ArraySeq[T] = ArraySeq.empty(using elemTag.asInstanceOf[ClassTag[T]])
5858

5959
/** The tag of the element type. This does not have to be equal to the element type of this ArraySeq. A primitive
6060
* ArraySeq can be backed by an array of boxed values and a reference ArraySeq can be backed by an array of a supertype

scala2-library-cc/src/scala/collection/mutable/CollisionProofHashMap.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ object CollisionProofHashMap extends SortedMapFactory[CollisionProofHashMap] {
768768
@SerialVersionUID(3L)
769769
private final class DeserializationFactory[K, V](val tableLength: Int, val loadFactor: Double, val ordering: Ordering[K]) extends Factory[(K, V), CollisionProofHashMap[K, V]] with Serializable {
770770
def fromSpecific(it: IterableOnce[(K, V)]^): CollisionProofHashMap[K, V] = new CollisionProofHashMap[K, V](tableLength, loadFactor)(ordering) ++= it
771-
def newBuilder: Builder[(K, V), CollisionProofHashMap[K, V]] = CollisionProofHashMap.newBuilder(tableLength, loadFactor)(ordering)
771+
def newBuilder: Builder[(K, V), CollisionProofHashMap[K, V]] = CollisionProofHashMap.newBuilder(tableLength, loadFactor)(using ordering)
772772
}
773773

774774
@unused @`inline` private def compare[K, V](key: K, hash: Int, node: LLNode[K, V])(implicit ord: Ordering[K]): Int = {

0 commit comments

Comments
 (0)