summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-12-14 12:16:02 +0100
committerGitHub <noreply@github.com>2016-12-14 12:16:02 +0100
commitb91b415b4fccfc46520dcd3f128b4b09d19d74f0 (patch)
tree6d36154928da33a7698d0e05432af7d68133e033
parent4c0a9f13e4c2d1669571d76645e180f60307f70f (diff)
parent64a0ec47092a1310e746b401837c61cefc591faa (diff)
downloadscala-b91b415b4fccfc46520dcd3f128b4b09d19d74f0.tar.gz
scala-b91b415b4fccfc46520dcd3f128b4b09d19d74f0.tar.bz2
scala-b91b415b4fccfc46520dcd3f128b4b09d19d74f0.zip
Merge pull request #5602 from retronym/ticket/SD-290
Modules w. serializable type alias "companions" are not serializable
-rw-r--r--src/library/scala/concurrent/forkjoin/package.scala4
-rw-r--r--test/files/run/SD-290.scala39
2 files changed, 41 insertions, 2 deletions
diff --git a/src/library/scala/concurrent/forkjoin/package.scala b/src/library/scala/concurrent/forkjoin/package.scala
index 1915e25d7b..889890e30b 100644
--- a/src/library/scala/concurrent/forkjoin/package.scala
+++ b/src/library/scala/concurrent/forkjoin/package.scala
@@ -25,7 +25,7 @@ package object forkjoin {
@deprecated("use java.util.concurrent.ForkJoinTask directly, instead of this alias", "2.12.0")
type ForkJoinTask[T] = juc.ForkJoinTask[T]
@deprecated("use java.util.concurrent.ForkJoinTask directly, instead of this alias", "2.12.0")
- object ForkJoinTask {
+ object ForkJoinTask extends scala.Serializable {
def adapt(runnable: Runnable): ForkJoinTask[_] = juc.ForkJoinTask.adapt(runnable)
def adapt[T](callable: juc.Callable[_ <: T]): ForkJoinTask[T] = juc.ForkJoinTask.adapt(callable)
def adapt[T](runnable: Runnable, result: T): ForkJoinTask[T] = juc.ForkJoinTask.adapt(runnable, result)
@@ -51,7 +51,7 @@ package object forkjoin {
@deprecated("use java.util.concurrent.ThreadLocalRandom directly, instead of this alias", "2.12.0")
type ThreadLocalRandom = juc.ThreadLocalRandom
@deprecated("use java.util.concurrent.ThreadLocalRandom directly, instead of this alias", "2.12.0")
- object ThreadLocalRandom {
+ object ThreadLocalRandom extends scala.Serializable {
// For source compatibility, current must declare the empty argument list.
// Having no argument list makes more sense since it doesn't have any side effects,
// but existing callers will break if they invoked it as `current()`.
diff --git a/test/files/run/SD-290.scala b/test/files/run/SD-290.scala
new file mode 100644
index 0000000000..0af9cb7cfa
--- /dev/null
+++ b/test/files/run/SD-290.scala
@@ -0,0 +1,39 @@
+object p1 {
+ class B
+ object B
+
+ class C extends java.io.Serializable
+ object C
+
+ type D = DD
+ object D
+}
+package object p2 {
+ class B
+ object B
+
+ class C extends java.io.Serializable
+ object C
+
+ type D = DD
+ object D
+
+}
+class DD extends java.io.Serializable
+
+object Test {
+ def main(args: Array[String]): Unit = {
+
+ // This is the behaviour that was intended and was unchanged by this commmit.
+ assert(!(p1.B : Object).isInstanceOf[scala.Serializable])
+ assert(p1.C.isInstanceOf[scala.Serializable])
+ assert(!(p1.D: Object).isInstanceOf[scala.Serializable])
+
+ assert(!(p2.B : Object).isInstanceOf[scala.Serializable])
+ assert(p2.C.isInstanceOf[scala.Serializable])
+
+ // this behaviour was different in 2.12.1 and earlier due to a bug
+ // in companionSymbolOf
+ assert(!(p2.D: Object).isInstanceOf[scala.Serializable])
+ }
+}