diff options
author | Lukas Rytz <lukas.rytz@epfl.ch> | 2010-11-30 15:38:56 +0000 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@epfl.ch> | 2010-11-30 15:38:56 +0000 |
commit | 4be5e11cccace4974ed9a449052455392570139f (patch) | |
tree | 88c86bc65b88df08b48584ed791acd1619983c0c /src/compiler/scala/tools/nsc/symtab/Definitions.scala | |
parent | 402d96dd3fab6ae677966a9a258c00b3f34a37ed (diff) | |
download | scala-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.scala | 13 |
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") |