diff options
Diffstat (limited to 'src/library/scala/collection/immutable')
17 files changed, 55 insertions, 65 deletions
diff --git a/src/library/scala/collection/immutable/BitSet.scala b/src/library/scala/collection/immutable/BitSet.scala index e7fd5c7f0f..fe3edbe88b 100644 --- a/src/library/scala/collection/immutable/BitSet.scala +++ b/src/library/scala/collection/immutable/BitSet.scala @@ -20,10 +20,11 @@ import mutable.{ Builder, AddingBuilder } * @define Coll immutable.BitSet * @define coll immutable bitset */ -@serializable @SerialVersionUID(1611436763290191562L) +@SerialVersionUID(1611436763290191562L) abstract class BitSet extends Set[Int] with scala.collection.BitSet - with BitSetLike[BitSet] { + with BitSetLike[BitSet] + with Serializable { override def empty = BitSet.empty def fromArray(elems: Array[Long]): BitSet = BitSet.fromArray(elems) diff --git a/src/library/scala/collection/immutable/HashMap.scala b/src/library/scala/collection/immutable/HashMap.scala index 977dd6d837..448210a330 100644 --- a/src/library/scala/collection/immutable/HashMap.scala +++ b/src/library/scala/collection/immutable/HashMap.scala @@ -35,8 +35,8 @@ import parallel.immutable.ParHashMap * @define mayNotTerminateInf * @define willNotTerminateInf */ -@serializable @SerialVersionUID(2L) -class HashMap[A, +B] extends Map[A,B] with MapLike[A, B, HashMap[A, B]] with Parallelizable[ParHashMap[A, B]] { +@SerialVersionUID(2L) +class HashMap[A, +B] extends Map[A,B] with MapLike[A, B, HashMap[A, B]] with Parallelizable[ParHashMap[A, B]] with Serializable { override def size: Int = 0 @@ -620,7 +620,7 @@ time { mNew.iterator.foreach( p => ()) } } else true } - @serializable @SerialVersionUID(2L) private class SerializationProxy[A,B](@transient private var orig: HashMap[A, B]) { + @SerialVersionUID(2L) private class SerializationProxy[A,B](@transient private var orig: HashMap[A, B]) extends Serializable { private def writeObject(out: java.io.ObjectOutputStream) { val s = orig.size out.writeInt(s) diff --git a/src/library/scala/collection/immutable/HashSet.scala b/src/library/scala/collection/immutable/HashSet.scala index e75c230eb8..1fe790145d 100644 --- a/src/library/scala/collection/immutable/HashSet.scala +++ b/src/library/scala/collection/immutable/HashSet.scala @@ -30,11 +30,12 @@ import collection.parallel.immutable.ParHashSet * @define Coll immutable.HashSet * @define coll immutable hash set */ -@serializable @SerialVersionUID(2L) +@SerialVersionUID(2L) class HashSet[A] extends Set[A] with GenericSetTemplate[A, HashSet] with SetLike[A, HashSet[A]] with Parallelizable[ParHashSet[A]] + with Serializable { override def companion: GenericCompanion[HashSet] = HashSet @@ -412,7 +413,7 @@ time { mNew.iterator.foreach( p => ()) } } } - @serializable @SerialVersionUID(2L) private class SerializationProxy[A,B](@transient private var orig: HashSet[A]) { + @SerialVersionUID(2L) private class SerializationProxy[A,B](@transient private var orig: HashSet[A]) extends Serializable { private def writeObject(out: java.io.ObjectOutputStream) { val s = orig.size out.writeInt(s) diff --git a/src/library/scala/collection/immutable/IndexedSeq.scala b/src/library/scala/collection/immutable/IndexedSeq.scala index ba432517ff..f47f344a16 100644 --- a/src/library/scala/collection/immutable/IndexedSeq.scala +++ b/src/library/scala/collection/immutable/IndexedSeq.scala @@ -31,8 +31,7 @@ trait IndexedSeq[+A] extends Seq[A] * @define Coll IndexedSeq */ object IndexedSeq extends SeqFactory[IndexedSeq] { - @serializable - class Impl[A](buf: ArrayBuffer[A]) extends IndexedSeq[A] { + class Impl[A](buf: ArrayBuffer[A]) extends IndexedSeq[A] with Serializable { def length = buf.length def apply(idx: Int) = buf.apply(idx) } diff --git a/src/library/scala/collection/immutable/ListMap.scala b/src/library/scala/collection/immutable/ListMap.scala index 53c99216c2..5fced699f3 100644 --- a/src/library/scala/collection/immutable/ListMap.scala +++ b/src/library/scala/collection/immutable/ListMap.scala @@ -42,8 +42,8 @@ object ListMap extends ImmutableMapFactory[ListMap] { * @define mayNotTerminateInf * @define willNotTerminateInf */ -@serializable @SerialVersionUID(301002838095710379L) -class ListMap[A, +B] extends Map[A, B] with MapLike[A, B, ListMap[A, B]] { +@SerialVersionUID(301002838095710379L) +class ListMap[A, +B] extends Map[A, B] with MapLike[A, B, ListMap[A, B]] with Serializable { override def empty = ListMap.empty @@ -123,9 +123,9 @@ class ListMap[A, +B] extends Map[A, B] with MapLike[A, B, ListMap[A, B]] { /** This class represents an entry in the `ListMap`. */ - @serializable @SerialVersionUID(-6453056603889598734L) + @SerialVersionUID(-6453056603889598734L) protected class Node[B1 >: B](override protected val key: A, - override protected val value: B1) extends ListMap[A, B1] { + override protected val value: B1) extends ListMap[A, B1] with Serializable { /** Returns the number of mappings in this map. * * @return number of mappings. diff --git a/src/library/scala/collection/immutable/ListSet.scala b/src/library/scala/collection/immutable/ListSet.scala index cea4d20595..8547ba195b 100644 --- a/src/library/scala/collection/immutable/ListSet.scala +++ b/src/library/scala/collection/immutable/ListSet.scala @@ -63,10 +63,10 @@ object ListSet extends ImmutableSetFactory[ListSet] { * @define mayNotTerminateInf * @define willNotTerminateInf */ -@serializable class ListSet[A] extends Set[A] with GenericSetTemplate[A, ListSet] - with SetLike[A, ListSet[A]] { self => + with SetLike[A, ListSet[A]] + with Serializable{ self => override def companion: GenericCompanion[ListSet] = ListSet /** Returns the number of elements in this set. @@ -136,8 +136,7 @@ class ListSet[A] extends Set[A] /** Represents an entry in the `ListSet`. */ - @serializable - protected class Node(override protected val elem: A) extends ListSet[A] { + protected class Node(override protected val elem: A) extends ListSet[A] with Serializable { override private[ListSet] def unchecked_outer = self /** Returns the number of elements in this set. diff --git a/src/library/scala/collection/immutable/Map.scala b/src/library/scala/collection/immutable/Map.scala index 272caec5ea..5a6b1be3d5 100644 --- a/src/library/scala/collection/immutable/Map.scala +++ b/src/library/scala/collection/immutable/Map.scala @@ -66,8 +66,7 @@ object Map extends ImmutableMapFactory[Map] { override def withDefaultValue[B1 >: B](d: B1): immutable.Map[A, B1] = new WithDefault[A, B1](underlying, x => d) } - @serializable - private object EmptyMap extends Map[Any, Nothing] { + private object EmptyMap extends Map[Any, Nothing] with Serializable { override def size: Int = 0 def get(key: Any): Option[Nothing] = None def iterator: Iterator[(Any, Nothing)] = Iterator.empty @@ -76,8 +75,8 @@ object Map extends ImmutableMapFactory[Map] { def - (key: Any): Map[Any, Nothing] = this } - @serializable @deprecated("use `Map.empty' instead") - class EmptyMap[A,B] extends Map[A,B] { + @deprecated("use `Map.empty' instead") + class EmptyMap[A,B] extends Map[A,B] with Serializable { override def size: Int = 0 def get(key: A): Option[B] = None def iterator: Iterator[(A, B)] = Iterator.empty @@ -86,8 +85,7 @@ object Map extends ImmutableMapFactory[Map] { def - (key: A): Map[A, B] = this } - @serializable - class Map1[A, +B](key1: A, value1: B) extends Map[A, B] { + class Map1[A, +B](key1: A, value1: B) extends Map[A, B] with Serializable { override def size = 1 def get(key: A): Option[B] = if (key == key1) Some(value1) else None @@ -103,8 +101,7 @@ object Map extends ImmutableMapFactory[Map] { } } - @serializable - class Map2[A, +B](key1: A, value1: B, key2: A, value2: B) extends Map[A, B] { + class Map2[A, +B](key1: A, value1: B, key2: A, value2: B) extends Map[A, B] with Serializable { override def size = 2 def get(key: A): Option[B] = if (key == key1) Some(value1) @@ -125,8 +122,7 @@ object Map extends ImmutableMapFactory[Map] { } } - @serializable - class Map3[A, +B](key1: A, value1: B, key2: A, value2: B, key3: A, value3: B) extends Map[A, B] { + class Map3[A, +B](key1: A, value1: B, key2: A, value2: B, key3: A, value3: B) extends Map[A, B] with Serializable { override def size = 3 def get(key: A): Option[B] = if (key == key1) Some(value1) @@ -150,8 +146,7 @@ object Map extends ImmutableMapFactory[Map] { } } - @serializable - class Map4[A, +B](key1: A, value1: B, key2: A, value2: B, key3: A, value3: B, key4: A, value4: B) extends Map[A, B] { + class Map4[A, +B](key1: A, value1: B, key2: A, value2: B, key3: A, value3: B, key4: A, value4: B) extends Map[A, B] with Serializable { override def size = 4 def get(key: A): Option[B] = if (key == key1) Some(value1) diff --git a/src/library/scala/collection/immutable/NumericRange.scala b/src/library/scala/collection/immutable/NumericRange.scala index 529a1b22c5..e40ef1cba7 100644 --- a/src/library/scala/collection/immutable/NumericRange.scala +++ b/src/library/scala/collection/immutable/NumericRange.scala @@ -39,11 +39,10 @@ import generic._ * @define mayNotTerminateInf * @define willNotTerminateInf */ -@serializable abstract class NumericRange[T] (val start: T, val end: T, val step: T, val isInclusive: Boolean) (implicit num: Integral[T]) -extends IndexedSeq[T] { +extends IndexedSeq[T] with Serializable { /** Note that NumericRange must be invariant so that constructs * such as "1L to 10 by 5" do not infer the range type as AnyVal. */ diff --git a/src/library/scala/collection/immutable/Queue.scala b/src/library/scala/collection/immutable/Queue.scala index f5cfd83643..bd2f27e57e 100644 --- a/src/library/scala/collection/immutable/Queue.scala +++ b/src/library/scala/collection/immutable/Queue.scala @@ -26,12 +26,12 @@ import annotation.tailrec * @define mayNotTerminateInf * @define willNotTerminateInf */ -@serializable @SerialVersionUID(-7622936493364270175L) class Queue[+A] protected(protected val in: List[A], protected val out: List[A]) extends LinearSeq[A] with GenericTraversableTemplate[A, Queue] - with LinearSeqLike[A, Queue[A]] { + with LinearSeqLike[A, Queue[A]] + with Serializable { override def companion: GenericCompanion[Queue] = Queue diff --git a/src/library/scala/collection/immutable/Range.scala b/src/library/scala/collection/immutable/Range.scala index 26e32e08fb..1ebf6e283c 100644 --- a/src/library/scala/collection/immutable/Range.scala +++ b/src/library/scala/collection/immutable/Range.scala @@ -38,10 +38,11 @@ import scala.collection.parallel.immutable.ParRange * '''Note:''' this method does not use builders to construct a new range, * and its complexity is O(1). */ -@serializable @SerialVersionUID(7618862778670199309L) +@SerialVersionUID(7618862778670199309L) class Range(val start: Int, val end: Int, val step: Int) extends IndexedSeq[Int] with collection.Parallelizable[ParRange] + with Serializable { def par = ParRange(start, end, step, false) diff --git a/src/library/scala/collection/immutable/RedBlack.scala b/src/library/scala/collection/immutable/RedBlack.scala index ae72c3ae69..d8c16f5ac1 100644 --- a/src/library/scala/collection/immutable/RedBlack.scala +++ b/src/library/scala/collection/immutable/RedBlack.scala @@ -15,8 +15,8 @@ package immutable * * @since 2.3 */ -@serializable @SerialVersionUID(8691885935445612921L) -abstract class RedBlack[A] { +@SerialVersionUID(8691885935445612921L) +abstract class RedBlack[A] extends Serializable { def isSmaller(x: A, y: A): Boolean @@ -27,8 +27,7 @@ abstract class RedBlack[A] { private def mkTree[B](isBlack: Boolean, k: A, v: B, l: Tree[B], r: Tree[B]) = if (isBlack) BlackTree(k, v, l, r) else RedTree(k, v, l, r) - @serializable - abstract class Tree[+B] { + abstract class Tree[+B] extends Serializable { def isEmpty: Boolean def isBlack: Boolean def lookup(x: A): Tree[B] @@ -49,8 +48,7 @@ abstract class RedBlack[A] { def last : A def count : Int } - @serializable - abstract class NonEmpty[+B] extends Tree[B] { + abstract class NonEmpty[+B] extends Tree[B] with Serializable { def isEmpty = false def key: A def value: B @@ -270,7 +268,6 @@ abstract class RedBlack[A] { def last = if (right.isEmpty) key else right.last def count = 1 + left.count + right.count } - @serializable case object Empty extends Tree[Nothing] { def isEmpty = true def isBlack = true @@ -291,14 +288,12 @@ abstract class RedBlack[A] { def last = throw new NoSuchElementException("empty map") def count = 0 } - @serializable case class RedTree[+B](override val key: A, override val value: B, override val left: Tree[B], override val right: Tree[B]) extends NonEmpty[B] { def isBlack = false } - @serializable case class BlackTree[+B](override val key: A, override val value: B, override val left: Tree[B], diff --git a/src/library/scala/collection/immutable/Set.scala b/src/library/scala/collection/immutable/Set.scala index 30f0d86139..ffd41752a4 100644 --- a/src/library/scala/collection/immutable/Set.scala +++ b/src/library/scala/collection/immutable/Set.scala @@ -43,8 +43,7 @@ object Set extends ImmutableSetFactory[Set] { private val hashSeed = "Set".hashCode /** An optimized representation for immutable empty sets */ - @serializable - private object EmptySet extends Set[Any] { + private object EmptySet extends Set[Any] with Serializable { override def size: Int = 0 def contains(elem: Any): Boolean = false def + (elem: Any): Set[Any] = new Set1(elem) @@ -53,8 +52,8 @@ object Set extends ImmutableSetFactory[Set] { override def foreach[U](f: Any => U): Unit = {} } - @serializable @deprecated("use `Set.empty' instead") - class EmptySet[A] extends Set[A] { + @deprecated("use `Set.empty' instead") + class EmptySet[A] extends Set[A] with Serializable { override def size: Int = 0 def contains(elem: A): Boolean = false def + (elem: A): Set[A] = new Set1(elem) @@ -64,8 +63,8 @@ object Set extends ImmutableSetFactory[Set] { } /** An optimized representation for immutable sets of size 1 */ - @serializable @SerialVersionUID(1233385750652442003L) - class Set1[A](elem1: A) extends Set[A] { + @SerialVersionUID(1233385750652442003L) + class Set1[A](elem1: A) extends Set[A] with Serializable { override def size: Int = 1 def contains(elem: A): Boolean = elem == elem1 @@ -83,8 +82,8 @@ object Set extends ImmutableSetFactory[Set] { } /** An optimized representation for immutable sets of size 2 */ - @serializable @SerialVersionUID(-6443011234944830092L) - class Set2[A](elem1: A, elem2: A) extends Set[A] { + @SerialVersionUID(-6443011234944830092L) + class Set2[A](elem1: A, elem2: A) extends Set[A] with Serializable { override def size: Int = 2 def contains(elem: A): Boolean = elem == elem1 || elem == elem2 @@ -103,8 +102,8 @@ object Set extends ImmutableSetFactory[Set] { } /** An optimized representation for immutable sets of size 3 */ - @serializable @SerialVersionUID(-3590273538119220064L) - class Set3[A](elem1: A, elem2: A, elem3: A) extends Set[A] { + @SerialVersionUID(-3590273538119220064L) + class Set3[A](elem1: A, elem2: A, elem3: A) extends Set[A] with Serializable { override def size: Int = 3 def contains(elem: A): Boolean = elem == elem1 || elem == elem2 || elem == elem3 @@ -124,8 +123,8 @@ object Set extends ImmutableSetFactory[Set] { } /** An optimized representation for immutable sets of size 4 */ - @serializable @SerialVersionUID(-3622399588156184395L) - class Set4[A](elem1: A, elem2: A, elem3: A, elem4: A) extends Set[A] { + @SerialVersionUID(-3622399588156184395L) + class Set4[A](elem1: A, elem2: A, elem3: A, elem4: A) extends Set[A] with Serializable { override def size: Int = 4 def contains(elem: A): Boolean = elem == elem1 || elem == elem2 || elem == elem3 || elem == elem4 diff --git a/src/library/scala/collection/immutable/Stack.scala b/src/library/scala/collection/immutable/Stack.scala index 58a37a8136..b9c45a1f32 100644 --- a/src/library/scala/collection/immutable/Stack.scala +++ b/src/library/scala/collection/immutable/Stack.scala @@ -46,11 +46,12 @@ object Stack extends SeqFactory[Stack] { * @define mayNotTerminateInf * @define willNotTerminateInf */ -@serializable @SerialVersionUID(1976480595012942526L) +@SerialVersionUID(1976480595012942526L) class Stack[+A] protected (protected val elems: List[A]) extends LinearSeq[A] with GenericTraversableTemplate[A, Stack] - with LinearSeqOptimized[A, Stack[A]] { + with LinearSeqOptimized[A, Stack[A]] + with Serializable { override def companion: GenericCompanion[Stack] = Stack def this() = this(Nil) diff --git a/src/library/scala/collection/immutable/Stream.scala b/src/library/scala/collection/immutable/Stream.scala index 0b1453369c..04fe6225b4 100644 --- a/src/library/scala/collection/immutable/Stream.scala +++ b/src/library/scala/collection/immutable/Stream.scala @@ -610,8 +610,8 @@ object Stream extends SeqFactory[Stream] { } /** A lazy cons cell, from which streams are built. */ - @serializable @SerialVersionUID(-602202424901551803L) - final class Cons[+A](hd: A, tl: => Stream[A]) extends Stream[A] { + @SerialVersionUID(-602202424901551803L) + final class Cons[+A](hd: A, tl: => Stream[A]) extends Stream[A] with Serializable { override def isEmpty = false override def head = hd @volatile private[this] var tlVal: Stream[A] = _ diff --git a/src/library/scala/collection/immutable/TreeMap.scala b/src/library/scala/collection/immutable/TreeMap.scala index 07212f8f5c..d54c31dec8 100644 --- a/src/library/scala/collection/immutable/TreeMap.scala +++ b/src/library/scala/collection/immutable/TreeMap.scala @@ -42,12 +42,12 @@ object TreeMap extends ImmutableSortedMapFactory[TreeMap] { * @define mayNotTerminateInf * @define willNotTerminateInf */ -@serializable class TreeMap[A, +B](override val size: Int, t: RedBlack[A]#Tree[B])(implicit val ordering: Ordering[A]) extends RedBlack[A] with SortedMap[A, B] with SortedMapLike[A, B, TreeMap[A, B]] - with MapLike[A, B, TreeMap[A, B]] { + with MapLike[A, B, TreeMap[A, B]] + with Serializable { def isSmaller(x: A, y: A) = ordering.lt(x, y) diff --git a/src/library/scala/collection/immutable/TreeSet.scala b/src/library/scala/collection/immutable/TreeSet.scala index 9eee10f165..d769aee84d 100644 --- a/src/library/scala/collection/immutable/TreeSet.scala +++ b/src/library/scala/collection/immutable/TreeSet.scala @@ -43,10 +43,10 @@ object TreeSet extends ImmutableSortedSetFactory[TreeSet] { * @define mayNotTerminateInf * @define willNotTerminateInf */ -@serializable @SerialVersionUID(-234066569443569402L) +@SerialVersionUID(-234066569443569402L) class TreeSet[A](override val size: Int, t: RedBlack[A]#Tree[Unit]) (implicit val ordering: Ordering[A]) - extends RedBlack[A] with SortedSet[A] with SortedSetLike[A, TreeSet[A]] { + extends RedBlack[A] with SortedSet[A] with SortedSetLike[A, TreeSet[A]] with Serializable { override def stringPrefix = "TreeSet" diff --git a/src/library/scala/collection/immutable/Vector.scala b/src/library/scala/collection/immutable/Vector.scala index 3f1aa8c1b5..aeb3b82147 100644 --- a/src/library/scala/collection/immutable/Vector.scala +++ b/src/library/scala/collection/immutable/Vector.scala @@ -32,11 +32,11 @@ object Vector extends SeqFactory[Vector] { // in principle, most members should be private. however, access privileges must // be carefully chosen to not prevent method inlining -@serializable final class Vector[+A](startIndex: Int, endIndex: Int, focus: Int) extends IndexedSeq[A] with GenericTraversableTemplate[A, Vector] with IndexedSeqLike[A, Vector[A]] - with VectorPointer[A @uncheckedVariance] { self => + with VectorPointer[A @uncheckedVariance] + with Serializable { self => override def companion: GenericCompanion[Vector] = Vector |