Skip to content

Commit ec2c34b

Browse files
committed
prepare for Dotty: add @uncheckedVariance as needed to satisfy compiler
1 parent 52d2c9c commit ec2c34b

10 files changed

+97
-98
lines changed

core/src/main/scala/scala/collection/CustomParallelizable.scala

+1-3
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@
1313
package scala
1414
package collection
1515

16-
import parallel.Combiner
17-
1816
trait CustomParallelizable[+A, +ParRepr <: Parallel] extends Any with Parallelizable[A, ParRepr] {
1917
override def par: ParRepr
20-
override protected[this] def parCombiner: Combiner[A, ParRepr] = throw new UnsupportedOperationException("")
18+
override protected[this] def parCombiner = throw new UnsupportedOperationException("")
2119
}
2220

core/src/main/scala/scala/collection/Parallelizable.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ package scala
1414
package collection
1515

1616
import parallel.Combiner
17+
import scala.annotation.unchecked.uncheckedVariance
1718

1819
/** This trait describes collections which can be turned into parallel collections
1920
* by invoking the method `par`. Parallelizable collections may be parameterized with
@@ -48,6 +49,6 @@ trait Parallelizable[+A, +ParRepr <: Parallel] extends Any {
4849
*
4950
* @return a combiner for the parallel collection of type `ParRepr`
5051
*/
51-
protected[this] def parCombiner: Combiner[A, ParRepr]
52+
protected[this] def parCombiner: Combiner[A @uncheckedVariance, ParRepr]
5253
}
5354

core/src/main/scala/scala/collection/generic/GenericParTemplate.scala

+3-6
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,9 @@ trait GenericParTemplate[+A, +CC[X] <: ParIterable[X]]
3131
{
3232
def companion: GenericParCompanion[CC]
3333

34-
protected[this] override def newBuilder: scala.collection.mutable.Builder[A, CC[A]] = newCombiner
34+
protected[this] override def newBuilder = newCombiner
3535

36-
protected[this] override def newCombiner: Combiner[A, CC[A]] = {
37-
val cb = companion.newCombiner[A]
38-
cb
39-
}
36+
protected[this] override def newCombiner = companion.newCombiner[A]
4037

4138
override def genericBuilder[B]: Combiner[B, CC[B]] = genericCombiner[B]
4239

@@ -50,7 +47,7 @@ trait GenericParTemplate[+A, +CC[X] <: ParIterable[X]]
5047

5148
trait GenericParMapTemplate[K, +V, +CC[X, Y] <: ParMap[X, Y]] extends GenericParTemplate[(K, V), ParIterable]
5249
{
53-
protected[this] override def newCombiner: Combiner[(K, V), CC[K, V]] = {
50+
protected[this] override def newCombiner: Combiner[(K, V @uncheckedVariance), CC[K, V @uncheckedVariance]] = {
5451
val cb = mapCompanion.newCombiner[K, V]
5552
cb
5653
}

core/src/main/scala/scala/collection/generic/GenericTraversableTemplate.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ trait GenericTraversableTemplate[+A, +CC[X] <: ParIterable[X]] extends HasNewBui
6363

6464
/** The builder that builds instances of type $Coll[A]
6565
*/
66-
protected[this] def newBuilder: Builder[A, CC[A]] = companion.newBuilder[A]
66+
protected[this] def newBuilder: Builder[A @uncheckedVariance, CC[A @uncheckedVariance]] = companion.newBuilder[A]
6767

6868
/** The generic builder that builds instances of $Coll
6969
* at arbitrary element types.

core/src/main/scala/scala/collection/generic/HasNewBuilder.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ package collection
1515
package generic
1616

1717
import mutable.Builder
18+
import scala.annotation.unchecked.uncheckedVariance
1819

1920
trait HasNewBuilder[+A, +Repr] extends Any {
2021
/** The builder that builds instances of Repr */
21-
protected[this] def newBuilder: Builder[A, Repr]
22+
protected[this] def newBuilder: Builder[A @uncheckedVariance, Repr]
2223
}

core/src/main/scala/scala/collection/generic/HasNewCombiner.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ package collection
1515
package generic
1616

1717
import scala.collection.parallel.Combiner
18+
import scala.annotation.unchecked.uncheckedVariance
1819

1920
trait HasNewCombiner[+T, +Repr] {
20-
protected[this] def newCombiner: Combiner[T, Repr]
21+
protected[this] def newCombiner: Combiner[T @uncheckedVariance, Repr]
2122
}
2223

core/src/main/scala/scala/collection/parallel/ParIterableLike.scala

+72-72
Large diffs are not rendered by default.

core/src/main/scala/scala/collection/parallel/ParSeqLike.scala

+11-10
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import scala.collection.generic.DefaultSignalling
1818
import scala.collection.generic.AtomicIndexFlag
1919
import scala.collection.generic.VolatileAbort
2020
import scala.collection.parallel.ParallelCollectionImplicits._
21+
import scala.annotation.unchecked.uncheckedVariance
2122

2223
/** A template trait for sequences of type `ParSeq[T]`, representing
2324
* parallel sequences with element type `T`.
@@ -67,7 +68,7 @@ extends ParIterableLike[T, CC, Repr, Sequential]
6768

6869
def canEqual(other: Any): Boolean = true
6970

70-
protected[this] type SuperParIterator = IterableSplitter[T]
71+
protected[this] type SuperParIterator = IterableSplitter[T @uncheckedVariance]
7172

7273
/** A more refined version of the iterator found in the `ParallelIterable` trait,
7374
* this iterator can be split into arbitrary subsets of iterators.
@@ -474,7 +475,7 @@ extends ParIterableLike[T, CC, Repr, Sequential]
474475

475476
protected trait ParSeqLikeTransformer[R, Tp] extends ParSeqLikeAccessor[R, Tp] with Transformer[R, Tp]
476477

477-
protected[this] class SegmentLength(pred: T => Boolean, from: Int, protected[this] val pit: SeqSplitter[T])
478+
protected[this] class SegmentLength(pred: T => Boolean, from: Int, protected[this] val pit: SeqSplitter[T @uncheckedVariance])
478479
extends ParSeqLikeAccessor[(Int, Boolean), SegmentLength] {
479480
@volatile var result: (Int, Boolean) = null
480481
def leaf(prev: Option[(Int, Boolean)]) = if (from < pit.indexFlag) {
@@ -492,7 +493,7 @@ extends ParIterableLike[T, CC, Repr, Sequential]
492493
override def requiresStrictSplitters = true
493494
}
494495

495-
protected[this] class IndexWhere(pred: T => Boolean, from: Int, protected[this] val pit: SeqSplitter[T])
496+
protected[this] class IndexWhere(pred: T => Boolean, from: Int, protected[this] val pit: SeqSplitter[T @uncheckedVariance])
496497
extends ParSeqLikeAccessor[Int, IndexWhere] {
497498
@volatile var result: Int = -1
498499
def leaf(prev: Option[Int]) = if (from < pit.indexFlag) {
@@ -513,7 +514,7 @@ extends ParIterableLike[T, CC, Repr, Sequential]
513514
override def requiresStrictSplitters = true
514515
}
515516

516-
protected[this] class LastIndexWhere(pred: T => Boolean, pos: Int, protected[this] val pit: SeqSplitter[T])
517+
protected[this] class LastIndexWhere(pred: T => Boolean, pos: Int, protected[this] val pit: SeqSplitter[T @uncheckedVariance])
517518
extends ParSeqLikeAccessor[Int, LastIndexWhere] {
518519
@volatile var result: Int = -1
519520
def leaf(prev: Option[Int]) = if (pos > pit.indexFlag) {
@@ -534,23 +535,23 @@ extends ParIterableLike[T, CC, Repr, Sequential]
534535
override def requiresStrictSplitters = true
535536
}
536537

537-
protected[this] class Reverse[U >: T, This >: Repr](cbf: () => Combiner[U, This], protected[this] val pit: SeqSplitter[T])
538+
protected[this] class Reverse[U >: T, This >: Repr](cbf: () => Combiner[U, This], protected[this] val pit: SeqSplitter[T @uncheckedVariance])
538539
extends ParSeqLikeTransformer[Combiner[U, This], Reverse[U, This]] {
539540
@volatile var result: Combiner[U, This] = null
540541
def leaf(prev: Option[Combiner[U, This]]) = result = pit.reverse2combiner(reuse(prev, cbf()))
541542
protected[this] def newSubtask(p: SuperParIterator) = new Reverse(cbf, down(p))
542543
override def merge(that: Reverse[U, This]) = result = that.result combine result
543544
}
544545

545-
protected[this] class ReverseMap[S, That](f: T => S, pbf: () => Combiner[S, That], protected[this] val pit: SeqSplitter[T])
546+
protected[this] class ReverseMap[S, That](f: T => S, pbf: () => Combiner[S, That], protected[this] val pit: SeqSplitter[T @uncheckedVariance])
546547
extends ParSeqLikeTransformer[Combiner[S, That], ReverseMap[S, That]] {
547548
@volatile var result: Combiner[S, That] = null
548549
def leaf(prev: Option[Combiner[S, That]]) = result = pit.reverseMap2combiner(f, pbf())
549550
protected[this] def newSubtask(p: SuperParIterator) = new ReverseMap(f, pbf, down(p))
550551
override def merge(that: ReverseMap[S, That]) = result = that.result combine result
551552
}
552553

553-
protected[this] class SameElements[U >: T](protected[this] val pit: SeqSplitter[T], val otherpit: SeqSplitter[U])
554+
protected[this] class SameElements[U >: T](protected[this] val pit: SeqSplitter[T @uncheckedVariance], val otherpit: SeqSplitter[U @uncheckedVariance])
554555
extends ParSeqLikeAccessor[Boolean, SameElements[U]] {
555556
@volatile var result: Boolean = true
556557
def leaf(prev: Option[Boolean]) = if (!pit.isAborted) {
@@ -567,7 +568,7 @@ extends ParIterableLike[T, CC, Repr, Sequential]
567568
override def requiresStrictSplitters = true
568569
}
569570

570-
protected[this] class Updated[U >: T, That](pos: Int, elem: U, pbf: CombinerFactory[U, That], protected[this] val pit: SeqSplitter[T])
571+
protected[this] class Updated[U >: T, That](pos: Int, elem: U, pbf: CombinerFactory[U, That], protected[this] val pit: SeqSplitter[T @uncheckedVariance])
571572
extends ParSeqLikeTransformer[Combiner[U, That], Updated[U, That]] {
572573
@volatile var result: Combiner[U, That] = null
573574
def leaf(prev: Option[Combiner[U, That]]) = result = pit.updated2combiner(pos, elem, pbf())
@@ -580,7 +581,7 @@ extends ParIterableLike[T, CC, Repr, Sequential]
580581
override def requiresStrictSplitters = true
581582
}
582583

583-
protected[this] class ParSeqLikeZip[U >: T, S, That](len: Int, cf: CombinerFactory[(U, S), That], protected[this] val pit: SeqSplitter[T], val otherpit: SeqSplitter[S])
584+
protected[this] class ParSeqLikeZip[U >: T, S, That](len: Int, cf: CombinerFactory[(U, S), That], protected[this] val pit: SeqSplitter[T @uncheckedVariance], val otherpit: SeqSplitter[S])
584585
extends ParSeqLikeTransformer[Combiner[(U, S), That], ParSeqLikeZip[U, S, That]] {
585586
@volatile var result: Result = null
586587
def leaf(prev: Option[Result]) = result = pit.zip2combiner[U, S, That](otherpit, cf())
@@ -598,7 +599,7 @@ extends ParIterableLike[T, CC, Repr, Sequential]
598599
override def merge(that: ParSeqLikeZip[U, S, That]) = result = result combine that.result
599600
}
600601

601-
protected[this] class Corresponds[S](corr: (T, S) => Boolean, protected[this] val pit: SeqSplitter[T], val otherpit: SeqSplitter[S])
602+
protected[this] class Corresponds[S](corr: (T, S) => Boolean, protected[this] val pit: SeqSplitter[T @uncheckedVariance], val otherpit: SeqSplitter[S])
602603
extends ParSeqLikeAccessor[Boolean, Corresponds[S]] {
603604
@volatile var result: Boolean = true
604605
def leaf(prev: Option[Boolean]) = if (!pit.isAborted) {

core/src/main/scala/scala/collection/parallel/RemainsIterator.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import scala.collection.generic.DelegatedSignalling
1818
import scala.collection.generic.IdleSignalling
1919
import scala.collection.mutable.Builder
2020
import scala.collection.parallel.immutable.repetition
21+
import scala.annotation.unchecked.uncheckedVariance
2122

2223
private[collection] trait RemainsIterator[+T] extends Iterator[T] {
2324
/** The number of elements this iterator has yet to iterate.
@@ -425,7 +426,7 @@ self =>
425426
def next() = { remaining -= 1; self.next() }
426427
def dup: IterableSplitter[T] = self.dup.take(taken)
427428
def split: Seq[IterableSplitter[T]] = takeSeq(self.split) { (p, n) => p.take(n) }
428-
protected[this] def takeSeq[PI <: IterableSplitter[T]](sq: Seq[PI])(taker: (PI, Int) => PI) = {
429+
protected[this] def takeSeq[PI <: IterableSplitter[T @uncheckedVariance]](sq: Seq[PI])(taker: (PI, Int) => PI) = {
429430
val sizes = sq.scanLeft(0)(_ + _.remaining)
430431
val shortened = for ((it, (from, until)) <- sq zip (sizes.init zip sizes.tail)) yield
431432
if (until < remaining) it else taker(it, remaining - from)

core/src/main/scala/scala/collection/parallel/package.scala

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ package collection
1515

1616
import scala.collection.parallel.mutable.ParArray
1717
import scala.collection.mutable.UnrolledBuffer
18-
import scala.annotation.unchecked.uncheckedVariance
1918
import scala.language.implicitConversions
2019

2120
/** Package object for parallel collections.
@@ -168,7 +167,7 @@ package parallel {
168167
(private val bucketnumber: Int)
169168
extends Combiner[Elem, To] {
170169
//self: EnvironmentPassingCombiner[Elem, To] =>
171-
protected var buckets: Array[UnrolledBuffer[Buck]] @uncheckedVariance = new Array[UnrolledBuffer[Buck]](bucketnumber)
170+
protected var buckets: Array[UnrolledBuffer[Buck]] = new Array[UnrolledBuffer[Buck]](bucketnumber)
172171
protected var sz: Int = 0
173172

174173
def size = sz

0 commit comments

Comments
 (0)