summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/symtab/Definitions.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/compiler/scala/tools/nsc/symtab/Definitions.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/compiler/scala/tools/nsc/symtab/Definitions.scala')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Definitions.scala13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Definitions.scala b/src/compiler/scala/tools/nsc/symtab/Definitions.scala
index a468e81b3e..5a4fa51899 100644
--- a/src/compiler/scala/tools/nsc/symtab/Definitions.scala
+++ b/src/compiler/scala/tools/nsc/symtab/Definitions.scala
@@ -169,11 +169,12 @@ trait Definitions extends reflect.generic.StandardDefinitions {
def scalaRuntimeSameElements = getMember(ScalaRunTimeModule, nme.sameElements)
// classes with special meanings
- lazy val NotNullClass = getClass("scala.NotNull")
- lazy val TypeConstraintClass = getClass("scala.TypeConstraint")
- lazy val SingletonClass = newClass(ScalaPackageClass, nme.Singleton, anyparam) setFlag (ABSTRACT | TRAIT | FINAL)
- lazy val SerializableClass = getClass(sn.Serializable)
- lazy val ComparableClass = getClass("java.lang.Comparable")
+ lazy val NotNullClass = getClass("scala.NotNull")
+ lazy val TypeConstraintClass = getClass("scala.TypeConstraint")
+ lazy val SingletonClass = newClass(ScalaPackageClass, nme.Singleton, anyparam) setFlag (ABSTRACT | TRAIT | FINAL)
+ lazy val SerializableClass = getClass("scala.Serializable")
+ lazy val JavaSerializableClass = getClass(sn.JavaSerializable)
+ lazy val ComparableClass = getClass("java.lang.Comparable")
lazy val RepeatedParamClass = newCovariantPolyClass(
ScalaPackageClass,
@@ -486,7 +487,7 @@ trait Definitions extends reflect.generic.StandardDefinitions {
lazy val ScalaNumberClass: Symbol = getClass("scala.math.ScalaNumber")
lazy val ScalaStrictFPAttr: Symbol = getClass("scala.annotation.strictfp")
lazy val SerialVersionUIDAttr: Symbol = getClass("scala.SerialVersionUID")
- lazy val SerializableAttr: Symbol = getClass("scala.serializable")
+ lazy val SerializableAttr: Symbol = getClass("scala.annotation.serializable") // @serializable is deprecated
lazy val TraitSetterAnnotationClass: Symbol = getClass("scala.runtime.TraitSetter")
lazy val TransientAttr: Symbol = getClass("scala.transient")
lazy val VolatileAttr: Symbol = getClass("scala.volatile")