summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/immutable/Set.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2010-11-30 15:38:56 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2010-11-30 15:38:56 +0000
commit4be5e11cccace4974ed9a449052455392570139f (patch)
tree88c86bc65b88df08b48584ed791acd1619983c0c /src/library/scala/collection/immutable/Set.scala
parent402d96dd3fab6ae677966a9a258c00b3f34a37ed (diff)
downloadscala-4be5e11cccace4974ed9a449052455392570139f.tar.gz
scala-4be5e11cccace4974ed9a449052455392570139f.tar.bz2
scala-4be5e11cccace4974ed9a449052455392570139f.zip
Deprecated the @serializable annotation, introd...
Deprecated the @serializable annotation, introduce a new trait "scala.Serializable" which has to be extended instead (cross-platform). Known issues: - Companion objects of serializable classes (including case classes) are automatically made serializable. However, they don't extend "Serializable" statically because of the known difficulty (should be done before typing, but hard). - Writing "case class C() extends Serializable" gives "error: trait Serializable is inherited twice" - Functions are serializable, but don't extend Serializable dynamically (could be fixed by making FunctionN Serializable - shouldn't we?) Note that @SerialVersionUID continues to be an annotation; it generates a static field, which is not possible otherwise in scala. Review by dragos, extempore. Question to dragos: in JavaPlatform.isMaybeBoxed, why is there a test for "JavaSerializableClass"? Is that correct?
Diffstat (limited to 'src/library/scala/collection/immutable/Set.scala')
-rw-r--r--src/library/scala/collection/immutable/Set.scala23
1 files changed, 11 insertions, 12 deletions
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