diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2016-12-14 12:16:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-14 12:16:02 +0100 |
commit | b91b415b4fccfc46520dcd3f128b4b09d19d74f0 (patch) | |
tree | 6d36154928da33a7698d0e05432af7d68133e033 | |
parent | 4c0a9f13e4c2d1669571d76645e180f60307f70f (diff) | |
parent | 64a0ec47092a1310e746b401837c61cefc591faa (diff) | |
download | scala-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.scala | 4 | ||||
-rw-r--r-- | test/files/run/SD-290.scala | 39 |
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]) + } +} |