diff options
author | Lukas Rytz <lukas.rytz@epfl.ch> | 2010-08-05 15:43:46 +0000 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@epfl.ch> | 2010-08-05 15:43:46 +0000 |
commit | 0a787b6477311a718cbb6abec15df9dfdc12186e (patch) | |
tree | 0c4eb20c15a17312c3d1cce51ea68344287a227a /test/files/run | |
parent | c690bf16b9dae7fec67b23b2deb105d7bd27621d (diff) | |
download | scala-0a787b6477311a718cbb6abec15df9dfdc12186e.tar.gz scala-0a787b6477311a718cbb6abec15df9dfdc12186e.tar.bz2 scala-0a787b6477311a718cbb6abec15df9dfdc12186e.zip |
close #3667.
scala> def ser(o: AnyRef) = new java.io.ObjectOutputStream(new java.io.ByteArrayOutputStream()).writeObject(o)
ser: (o: AnyRef)Unit
scala> @serializable class Outer {
| case class Inner(x: Int)
| }
defined class Outer
scala> val o = new Outer
o: Outer = Outer@34469729
scala> ser(new o.Inner(1))
scala> o.Inner // initialize the Inner$module field of o
res1: o.Inner.type = Inner
scala> ser(new o.Inner(1))
java.io.NotSerializableException: Outer$Inner$
review by extempore.
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/t3667.check | 3 | ||||
-rw-r--r-- | test/files/run/t3667.scala | 45 |
2 files changed, 48 insertions, 0 deletions
diff --git a/test/files/run/t3667.check b/test/files/run/t3667.check new file mode 100644 index 0000000000..01e79c32a8 --- /dev/null +++ b/test/files/run/t3667.check @@ -0,0 +1,3 @@ +1 +2 +3 diff --git a/test/files/run/t3667.scala b/test/files/run/t3667.scala new file mode 100644 index 0000000000..804432c516 --- /dev/null +++ b/test/files/run/t3667.scala @@ -0,0 +1,45 @@ +object Test { + def main(args: Array[String]) { + val o1 = new Outer1 + val o2 = new Outer2 + val o3 = new Outer3 + + println(1) + ser(new o1.Inner(1)) + o1.Inner // make sure the Inner$module field of the Outer1 instance is initialized! + ser(new o1.Inner(1)) + + println(2) + ser(new o2.Inner(1)) + o2.Inner + ser(new o2.Inner(1)) + + println(3) + ser(new o3.Inner(1)) + o3.Inner + ser(new o3.Inner(1)) + } + + def ser(o: AnyRef) { + val oos = new java.io.ObjectOutputStream(new java.io.ByteArrayOutputStream()) + oos.writeObject(o) + oos.close() + } + +} + +@serializable +class Outer1 { + @serializable + class Inner(x: Int = 1) +} + +@serializable +class Outer2 { + case class Inner(x: Int = 1) +} + +@serializable +class Outer3 { + case class Inner(x: Int) +} |