Skip to content

Commit d6e3815

Browse files
committed
Update scalaVersion to 2.13.0-M4
1 parent d126a91 commit d6e3815

21 files changed

+48
-45
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// TODO Make it a cross project when Scala.js is released for 2.13.0-M4
22

3-
scalaVersion := "2.13.0-M4-pre-20d3c21"
3+
scalaVersion := "2.13.0-M4"
44

55
organization := "org.scala-lang"
66

src/main/scala/scala/collection/MultiDict.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package scala.collection
22

33
import annotation.unchecked.uncheckedVariance
4+
import scala.util.hashing.MurmurHash3
45

56
/**
67
* A multidict is a map that can associate a set of values to a given key.
@@ -16,7 +17,7 @@ trait MultiDict[K, V]
1617
def multiMapFactory: MapFactory[MultiDictCC] = MultiDict
1718

1819
override protected[this] def fromSpecificIterable(coll: Iterable[(K, V)]): MultiDictCC[K, V] = multiMapFactory.from(coll)
19-
override protected[this] def newSpecificBuilder(): mutable.Builder[(K, V), MultiDictCC[K, V]] = multiMapFactory.newBuilder[K, V]()
20+
override protected[this] def newSpecificBuilder: mutable.Builder[(K, V), MultiDictCC[K, V]] = multiMapFactory.newBuilder[K, V]
2021

2122
def canEqual(that: Any): Boolean = true
2223

@@ -34,7 +35,7 @@ trait MultiDict[K, V]
3435
case _ => false
3536
}
3637

37-
override def hashCode(): Int = Set.unorderedHash(sets, "MultiMap".##)
38+
override def hashCode(): Int = MurmurHash3.unorderedHash(sets, "MultiMap".##)
3839

3940
}
4041

@@ -60,8 +61,8 @@ trait MultiDictOps[K, V, +CC[X, Y] <: MultiDict[X, Y], +C <: MultiDict[K, V]]
6061
*/
6162
def sets: Map[K, Set[V]]
6263

63-
def iterator(): Iterator[(K, V)] =
64-
sets.iterator().flatMap { case (k, vs) => vs.view.map(v => (k, v)) }
64+
def iterator: Iterator[(K, V)] =
65+
sets.iterator.flatMap { case (k, vs) => vs.view.map(v => (k, v)) }
6566

6667
/**
6768
* @return The set of values associated with the given `key`, or the empty

src/main/scala/scala/collection/MultiSet.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package scala.collection
22

3+
import scala.util.hashing.MurmurHash3
4+
35
/**
46
* A multiset is a set that can contain multiple occurrences of a same value.
57
*
@@ -26,7 +28,7 @@ trait MultiSet[A]
2628
case _ => false
2729
}
2830

29-
override def hashCode(): Int = collection.Set.unorderedHash(occurrences, "MultiSet".##)
31+
override def hashCode(): Int = MurmurHash3.unorderedHash(occurrences, "MultiSet".##)
3032

3133
}
3234

@@ -45,8 +47,8 @@ trait MultiSetOps[A, +CC[X] <: MultiSet[X], +C <: MultiSet[A]]
4547
*/
4648
def occurrences: Map[A, Int]
4749

48-
def iterator(): Iterator[A] =
49-
occurrences.iterator().flatMap { case (elem, n) => new View.Fill(n)(elem) }
50+
def iterator: Iterator[A] =
51+
occurrences.iterator.flatMap { case (elem, n) => new View.Fill(n)(elem) }
5052

5153
/**
5254
* @return The number of occurrences of `elem` in this multiset

src/main/scala/scala/collection/SortedMultiDict.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ trait SortedMultiDict[K, V]
1414
def unsorted: MultiDict[K, V] = this
1515

1616
override protected[this] def fromSpecificIterable(coll: Iterable[(K, V)]): SortedMultiDictCC[K, V] = sortedMultiMapFactory.from(coll)
17-
override protected[this] def newSpecificBuilder(): mutable.Builder[(K, V), SortedMultiDictCC[K, V]] = sortedMultiMapFactory.newBuilder[K, V]()
17+
override protected[this] def newSpecificBuilder: mutable.Builder[(K, V), SortedMultiDictCC[K, V]] = sortedMultiMapFactory.newBuilder[K, V]
1818
}
1919

2020
trait SortedMultiDictOps[K, V, +CC[X, Y] <: MultiDict[X, Y], +C <: MultiDict[K, V]]
2121
extends MultiDictOps[K, V, MultiDict, C]
2222
with SortedOps[K, C] {
2323

24-
protected[this] type SortedMultiDictCC[K, V] = CC[K, V] @uncheckedVariance
24+
protected[this] type SortedMultiDictCC[X, Y] = CC[X, Y] @uncheckedVariance
2525

2626
def sortedMultiMapFactory: SortedMapFactory[SortedMultiDictCC]
2727

@@ -42,14 +42,14 @@ trait SortedMultiDictOps[K, V, +CC[X, Y] <: MultiDict[X, Y], +C <: MultiDict[K,
4242
def lastKey: K = sets.lastKey
4343

4444
def rangeTo(to: K): C = {
45-
val i = from(to).iterator()
45+
val i = rangeFrom(to).iterator
4646
if (i.isEmpty) return coll
4747
val next = i.next()._1
4848
if (ordering.compare(next, to) == 0)
4949
if (i.isEmpty) coll
50-
else until(i.next()._1)
50+
else rangeUntil(i.next()._1)
5151
else
52-
until(next)
52+
rangeUntil(next)
5353
}
5454

5555
override def withFilter(p: ((K, V)) => Boolean): SortedMultiDictOps.WithFilter[K, V, IterableCC, MultiDictCC, CC] =

src/main/scala/scala/collection/SortedMultiSet.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ trait SortedMultiSet[A]
1313
def unsorted: MultiSet[A] = this
1414

1515
override protected[this] def fromSpecificIterable(coll: Iterable[A]): SortedIterableCC[A] = sortedIterableFactory.from(coll)
16-
override protected[this] def newSpecificBuilder(): mutable.Builder[A, SortedIterableCC[A]] = sortedIterableFactory.newBuilder[A]()
16+
override protected[this] def newSpecificBuilder: mutable.Builder[A, SortedIterableCC[A]] = sortedIterableFactory.newBuilder[A]
1717

1818
protected[this] def sortedFromIterable[B : Ordering](it: scala.collection.Iterable[B]): SortedIterableCC[B] = sortedIterableFactory.from(it)
1919

@@ -52,14 +52,14 @@ trait SortedMultiSetOps[A, +CC[X] <: MultiSet[X], +C <: MultiSet[A]]
5252
def lastKey: A = occurrences.lastKey
5353

5454
def rangeTo(to: A): C = {
55-
val i = from(to).iterator()
55+
val i = rangeFrom(to).iterator
5656
if (i.isEmpty) return coll
5757
val next = i.next()
5858
if (ordering.compare(next, to) == 0)
5959
if (i.isEmpty) coll
60-
else until(i.next())
60+
else rangeUntil(i.next())
6161
else
62-
until(next)
62+
rangeUntil(next)
6363
}
6464

6565
override def withFilter(p: A => Boolean): SortedMultiSetOps.WithFilter[A, IterableCC, CC] =

src/main/scala/scala/collection/decorators/HasSeqOps.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package scala.collection
22
package decorators
33

4-
import scala.collection.immutable.{ImmutableArray, Range}
4+
import scala.collection.immutable.{ArraySeq, Range}
55

66
/** Type class witnessing that a collection type `C` has
77
* elements of type `A` and has a conversion to `SeqOps[A, _, _]`.
@@ -31,7 +31,7 @@ object HasSeqOps {
3131
implicit def stringHasSeqOps: HasSeqOps[String] { type A = Char } =
3232
new HasSeqOps[String] {
3333
type A = Char
34-
def apply(c: String): SeqOps[Char, AnyConstr, _] = stringToStringOps(c)
34+
def apply(c: String): SeqOps[Char, AnyConstr, _] = c: Seq[Char]
3535
}
3636

3737
// 3. StringView
@@ -45,7 +45,7 @@ object HasSeqOps {
4545
implicit def arrayHasSeqOps[A0]: HasSeqOps[Array[A0]] { type A = A0 } =
4646
new HasSeqOps[Array[A0]] {
4747
type A = A0
48-
def apply(c: Array[A0]): SeqOps[A0, AnyConstr, _] = ImmutableArray.unsafeWrapArray(c)
48+
def apply(c: Array[A0]): SeqOps[A0, AnyConstr, _] = mutable.ArraySeq.make(c)
4949
}
5050

5151
// 5. Range collections

src/main/scala/scala/collection/decorators/IterableDecorator.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class IterableDecorator[C, I <: HasIterableOps[C]](coll: C)(implicit val it: I)
1515
* all the elements have been traversed or earlier if the operator returns `None`
1616
*/
1717
def foldSomeLeft[B](z: B)(op: (B, it.A) => Option[B]): B =
18-
it(coll).iterator().foldSomeLeft(z)(op)
18+
it(coll).iterator.foldSomeLeft(z)(op)
1919

2020
/**
2121
* Right to left fold that can be interrupted before traversing the whole collection.
@@ -29,6 +29,6 @@ class IterableDecorator[C, I <: HasIterableOps[C]](coll: C)(implicit val it: I)
2929
* `f` is applied to the previous result to produce the new result and the fold continues.
3030
*/
3131
def lazyFoldRight[B](z: B)(op: it.A => Either[B, B => B]): B =
32-
it(coll).iterator().lazyFoldRight(z)(op)
32+
it(coll).iterator.lazyFoldRight(z)(op)
3333

3434
}

src/main/scala/scala/collection/decorators/views.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ object View {
77
type SomeIterableOps[+A] = IterableOps[A, AnyConstr, _]
88

99
class Intersperse[A](underlying: SomeIterableOps[A], sep: A) extends View[A] {
10-
def iterator(): Iterator[A] = underlying.iterator().intersperse(sep)
10+
def iterator: Iterator[A] = underlying.iterator.intersperse(sep)
1111

1212
override def knownSize: Int = if (underlying.knownSize > 0) (2 * underlying.knownSize - 1) else underlying.knownSize
1313
}
1414

1515
class IntersperseSurround[A](underlying: SomeIterableOps[A], start: A, sep: A, end: A) extends View[A] {
16-
def iterator(): Iterator[A] = underlying.iterator().intersperse(start, sep, end)
16+
def iterator: Iterator[A] = underlying.iterator.intersperse(start, sep, end)
1717

1818
override def knownSize: Int =
1919
if (underlying.knownSize > 0) (2 * underlying.knownSize + 1)

src/main/scala/scala/collection/immutable/MultiDict.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ object MultiDict extends MapFactory[MultiDict] {
6565
def from[K, V](source: IterableOnce[(K, V)]): MultiDict[K, V] =
6666
source match {
6767
case mm: MultiDict[K, V] => mm
68-
case _ => (newBuilder[K, V]() ++= source).result()
68+
case _ => (newBuilder[K, V] ++= source).result()
6969
}
7070

71-
def newBuilder[K, V](): Builder[(K, V), MultiDict[K, V]] =
71+
def newBuilder[K, V]: Builder[(K, V), MultiDict[K, V]] =
7272
new ImmutableBuilder[(K, V), MultiDict[K, V]](empty[K, V]) {
7373
def addOne(elem: (K, V)): this.type = { elems = elems + elem; this }
7474
}

src/main/scala/scala/collection/immutable/MultiSet.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ object MultiSet extends IterableFactory[MultiSet] {
7676
def from[A](source: IterableOnce[A]): MultiSet[A] =
7777
source match {
7878
case ms: MultiSet[A] => ms
79-
case _ => (newBuilder[A]() ++= source).result()
79+
case _ => (newBuilder[A] ++= source).result()
8080
}
8181

8282
def empty[A] = new MultiSetImpl[A](Map.empty)
8383

84-
def newBuilder[A](): Builder[A, MultiSet[A]] =
84+
def newBuilder[A]: Builder[A, MultiSet[A]] =
8585
new ImmutableBuilder[A, MultiSet[A]](empty[A]) {
8686
def addOne(elem: A): this.type = { elems = elems + elem; this }
8787
}

src/main/scala/scala/collection/immutable/SortedMultiDict.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ object SortedMultiDict extends SortedMapFactory[SortedMultiDict] {
7070
def from[K: Ordering, V](it: IterableOnce[(K, V)]): SortedMultiDict[K, V] =
7171
it match {
7272
case smm: SortedMultiDict[K, V] => smm
73-
case _ => (newBuilder[K, V]() ++= it).result()
73+
case _ => (newBuilder[K, V] ++= it).result()
7474
}
7575

76-
def newBuilder[K: Ordering, V](): Builder[(K, V), SortedMultiDict[K, V]] =
76+
def newBuilder[K: Ordering, V]: Builder[(K, V), SortedMultiDict[K, V]] =
7777
new ImmutableBuilder[(K, V), SortedMultiDict[K, V]](empty[K, V]) {
7878
def addOne(elem: (K, V)): this.type = { elems = elems + elem; this }
7979
}

src/main/scala/scala/collection/immutable/SortedMultiSet.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ object SortedMultiSet extends SortedIterableFactory[SortedMultiSet] {
5252
def from[A: Ordering](source: IterableOnce[A]): SortedMultiSet[A] =
5353
source match {
5454
case sms: SortedMultiSet[A] => sms
55-
case _ => (newBuilder[A]() ++= source).result()
55+
case _ => (newBuilder[A] ++= source).result()
5656
}
5757

5858
def empty[A: Ordering]: SortedMultiSet[A] = new SortedMultiSet[A](TreeMap.empty)
5959

60-
def newBuilder[A: Ordering](): Builder[A, SortedMultiSet[A]] =
60+
def newBuilder[A: Ordering]: Builder[A, SortedMultiSet[A]] =
6161
new ImmutableBuilder[A, SortedMultiSet[A]](empty) {
6262
def addOne(elem: A): this.type = { elems = elems + elem; this }
6363
}

src/main/scala/scala/collection/mutable/MultiDict.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ object MultiDict extends MapFactory[MultiDict] {
5858

5959
def empty[K, V]: MultiDict[K, V] = new MultiDict(Map.empty)
6060

61-
def from[K, V](source: IterableOnce[(K, V)]): MultiDict[K, V] = (newBuilder[K, V]() ++= source).result()
61+
def from[K, V](source: IterableOnce[(K, V)]): MultiDict[K, V] = (newBuilder[K, V] ++= source).result()
6262

63-
def newBuilder[K, V](): Builder[(K, V), MultiDict[K, V]] = new GrowableBuilder[(K, V), MultiDict[K, V]](empty)
63+
def newBuilder[K, V]: Builder[(K, V), MultiDict[K, V]] = new GrowableBuilder[(K, V), MultiDict[K, V]](empty)
6464

6565
}

src/main/scala/scala/collection/mutable/MultiSet.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ class MultiSetImpl[A] private[mutable] (val elems: Map[A, Int]) extends MultiSet
4040

4141
object MultiSet extends IterableFactory[MultiSet] {
4242

43-
def from[A](source: IterableOnce[A]): MultiSet[A] = (newBuilder[A]() ++= source).result()
43+
def from[A](source: IterableOnce[A]): MultiSet[A] = (newBuilder[A] ++= source).result()
4444

4545
def empty[A]: MultiSet[A] = new MultiSetImpl[A](Map.empty)
4646

47-
def newBuilder[A](): Builder[A, MultiSet[A]] = new GrowableBuilder[A, MultiSet[A]](empty)
47+
def newBuilder[A]: Builder[A, MultiSet[A]] = new GrowableBuilder[A, MultiSet[A]](empty)
4848

4949
}

src/main/scala/scala/collection/mutable/SortedMultiDict.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ object SortedMultiDict extends SortedMapFactory[SortedMultiDict] {
6565
new SortedMultiDict(SortedMap.empty)
6666

6767
def from[K: Ordering, V](it: IterableOnce[(K, V)]): SortedMultiDict[K, V] =
68-
(newBuilder[K, V]() ++= it).result()
68+
(newBuilder[K, V] ++= it).result()
6969

70-
def newBuilder[K: Ordering, V](): Builder[(K, V), SortedMultiDict[K, V]] =
70+
def newBuilder[K: Ordering, V]: Builder[(K, V), SortedMultiDict[K, V]] =
7171
new GrowableBuilder[(K, V), SortedMultiDict[K, V]](empty)
7272

7373
}

src/main/scala/scala/collection/mutable/SortedMultiSet.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ class SortedMultiSet[A] private (elems: SortedMap[A, Int])(implicit val ordering
4444

4545
object SortedMultiSet extends SortedIterableFactory[SortedMultiSet] {
4646

47-
def from[E: Ordering](it: IterableOnce[E]): SortedMultiSet[E] = (newBuilder[E]() ++= it).result()
47+
def from[E: Ordering](it: IterableOnce[E]): SortedMultiSet[E] = (newBuilder[E] ++= it).result()
4848

4949
def empty[A: Ordering]: SortedMultiSet[A] = new SortedMultiSet[A](SortedMap.empty[A, Int])
5050

51-
def newBuilder[A: Ordering](): Builder[A, SortedMultiSet[A]] = new GrowableBuilder[A, SortedMultiSet[A]](empty)
51+
def newBuilder[A: Ordering]: Builder[A, SortedMultiSet[A]] = new GrowableBuilder[A, SortedMultiSet[A]](empty)
5252

5353
}

src/test/scala/scala/collection/SortedMultiMapTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class SortedMultiMapTest {
1313
Assert.assertEquals(Set(0, 1), smm.get(2))
1414
Assert.assertEquals(1, smm.firstKey)
1515
Assert.assertEquals(3, smm.lastKey)
16-
Assert.assertEquals(SortedMultiDict(3 -> 2, 2 -> 1, 2 -> 0), smm.from(2))
16+
Assert.assertEquals(SortedMultiDict(3 -> 2, 2 -> 1, 2 -> 0), smm.rangeFrom(2))
1717
}
1818

1919
@Test def run(): Unit = {

src/test/scala/scala/collection/SortedMultiSetTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class SortedMultiSetTest {
1313
Assert.assertEquals(2, sms.get(2))
1414
Assert.assertEquals(1, sms.firstKey)
1515
Assert.assertEquals(3, sms.lastKey)
16-
Assert.assertEquals(SortedMultiSet(3, 2, 2), sms.from(2))
16+
Assert.assertEquals(SortedMultiSet(3, 2, 2), sms.rangeFrom(2))
1717
}
1818

1919
@Test def run(): Unit = {

src/test/scala/scala/collection/immutable/SortedMultiMapTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class SortedMultiMapTest {
1717
Assert.assertEquals("a", smm.firstKey)
1818
Assert.assertEquals("c", smm.lastKey)
1919

20-
Assert.assertEquals(SortedMultiDict("c" -> 1), smm.from("c"))
20+
Assert.assertEquals(SortedMultiDict("c" -> 1), smm.rangeFrom("c"))
2121

2222
val smm2 = smm + ("a" -> 2)
2323
Assert.assertEquals(Set(1, 2), smm2.get("a"))

src/test/scala/scala/collection/immutable/SortedMultiSetTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class SortedMultiSetTest {
1414
Assert.assertEquals(2, sms.get(2))
1515
Assert.assertEquals(1, sms.firstKey)
1616
Assert.assertEquals(3, sms.lastKey)
17-
Assert.assertEquals(SortedMultiSet(3, 2, 2), sms.from(2))
17+
Assert.assertEquals(SortedMultiSet(3, 2, 2), sms.rangeFrom(2))
1818
val sms2 = sms + 2
1919
Assert.assertEquals(3, sms2.get(2))
2020
val sms3 = sms2 - 3

src/test/scala/scala/collection/mutable/SortedMultiMapTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class SortedMultiMapTest {
2323
Assert.assertEquals("a", smm.firstKey)
2424
Assert.assertEquals("c", smm.lastKey)
2525

26-
Assert.assertEquals(SortedMultiDict("c" -> 1), smm.from("c"))
26+
Assert.assertEquals(SortedMultiDict("c" -> 1), smm.rangeFrom("c"))
2727

2828
smm += "a" -> 2
2929
Assert.assertEquals(Set(1, 2), smm.get("a"))

0 commit comments

Comments
 (0)