diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2011-07-11 15:17:34 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2011-07-11 15:17:34 +0000 |
commit | 8110e02ec28c2a5e79a6740869700e7f059f41fa (patch) | |
tree | cf61a1ea7551bb7af2f6a8a75d5b1ecf1132c13c | |
parent | 74db0a59ad28f49bcf98ef839359697b680289cf (diff) | |
download | scala-8110e02ec28c2a5e79a6740869700e7f059f41fa.tar.gz scala-8110e02ec28c2a5e79a6740869700e7f059f41fa.tar.bz2 scala-8110e02ec28c2a5e79a6740869700e7f059f41fa.zip |
Making empty streams serializable.
No review.
-rw-r--r-- | src/library/scala/collection/immutable/Stream.scala | 2 | ||||
-rw-r--r-- | test/files/run/serialize-stream.check | 6 | ||||
-rw-r--r-- | test/files/run/serialize-stream.scala | 20 |
3 files changed, 27 insertions, 1 deletions
diff --git a/src/library/scala/collection/immutable/Stream.scala b/src/library/scala/collection/immutable/Stream.scala index a0e5668349..66d1562884 100644 --- a/src/library/scala/collection/immutable/Stream.scala +++ b/src/library/scala/collection/immutable/Stream.scala @@ -569,7 +569,7 @@ object Stream extends SeqFactory[Stream] { def result: Stream[A] = parts.toStream flatMap (_.toStream) } - object Empty extends Stream[Nothing] { + object Empty extends Stream[Nothing] with Serializable { override def isEmpty = true override def head = throw new NoSuchElementException("head of empty stream") override def tail = throw new UnsupportedOperationException("tail of empty stream") diff --git a/test/files/run/serialize-stream.check b/test/files/run/serialize-stream.check new file mode 100644 index 0000000000..e2a9f57aa7 --- /dev/null +++ b/test/files/run/serialize-stream.check @@ -0,0 +1,6 @@ +Stream(1, ?) +List(1, 2, 3) +Stream(1, ?) +List(1) +Stream() +List() diff --git a/test/files/run/serialize-stream.scala b/test/files/run/serialize-stream.scala new file mode 100644 index 0000000000..3ab9f2df34 --- /dev/null +++ b/test/files/run/serialize-stream.scala @@ -0,0 +1,20 @@ + + +object Test { + def ser[T](s: Stream[T]) { + val bos = new java.io.ByteArrayOutputStream() + val oos = new java.io.ObjectOutputStream(bos) + oos.writeObject(s) + + val ois = new java.io.ObjectInputStream(new java.io.ByteArrayInputStream(bos.toByteArray)) + val obj = ois.readObject() + println(obj) + println(obj.asInstanceOf[Seq[T]].toList) + } + + def main(args: Array[String]) { + ser(Stream(1, 2, 3)) + ser(Stream(1)) + ser(Stream()) + } +} |