diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2014-10-10 14:02:12 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2014-10-10 16:10:17 +0200 |
commit | 4e546eb08c191fb7b9ccfd06f9a749bd1326cd64 (patch) | |
tree | 16b302b0a51e1b3bc7d4ef4cfdce6ef8db0852ef /src/library/scala/Option.scala | |
parent | 926c0946a72314e5a5c720617c149705c6bb588c (diff) | |
download | scala-4e546eb08c191fb7b9ccfd06f9a749bd1326cd64.tar.gz scala-4e546eb08c191fb7b9ccfd06f9a749bd1326cd64.tar.bz2 scala-4e546eb08c191fb7b9ccfd06f9a749bd1326cd64.zip |
Fix t8549 under -Ydelambdafy:method
the structure of Option.class generated by delambdafy:method is
slightly different. For example, lambdas declared within Option are
not emitted as nested classes, so under delambdafy:method there's no
inner class entry for anonfun classes.
The test failed because serializing a ClassTag involves serializing an
Option. Option did not have a `@SerialVersionUID`, and the classfile
generated by delambdafy:method has a different value.
The annotation is required on the parent class (Option) as well as the
subclasses (Some / None). De-serializing a Some will fail if Option
has a different SerialVersionUID.
Relates to SI-8576. We should probably have more SVUID annotations in
the library.
Diffstat (limited to 'src/library/scala/Option.scala')
-rw-r--r-- | src/library/scala/Option.scala | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/library/scala/Option.scala b/src/library/scala/Option.scala index 66900e7258..b073688a5b 100644 --- a/src/library/scala/Option.scala +++ b/src/library/scala/Option.scala @@ -94,6 +94,7 @@ object Option { * @define bfinfo an implicit value of class `CanBuildFrom` which determines the result class `That` from the current * representation type `Repr` and the new element type `B`. */ +@SerialVersionUID(-114498752079829388L) // value computed by serialver for 2.11.2, annotation added in 2.11.4 sealed abstract class Option[+A] extends Product with Serializable { self => @@ -328,6 +329,7 @@ sealed abstract class Option[+A] extends Product with Serializable { * @author Martin Odersky * @version 1.0, 16/07/2003 */ +@SerialVersionUID(1234815782226070388L) // value computed by serialver for 2.11.2, annotation added in 2.11.4 final case class Some[+A](x: A) extends Option[A] { def isEmpty = false def get = x @@ -339,6 +341,7 @@ final case class Some[+A](x: A) extends Option[A] { * @author Martin Odersky * @version 1.0, 16/07/2003 */ +@SerialVersionUID(5066590221178148012L) // value computed by serialver for 2.11.2, annotation added in 2.11.4 case object None extends Option[Nothing] { def isEmpty = true def get = throw new NoSuchElementException("None.get") |