summaryrefslogtreecommitdiff
path: root/test/files/run/t3667.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2010-08-05 15:43:46 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2010-08-05 15:43:46 +0000
commit0a787b6477311a718cbb6abec15df9dfdc12186e (patch)
tree0c4eb20c15a17312c3d1cce51ea68344287a227a /test/files/run/t3667.scala
parentc690bf16b9dae7fec67b23b2deb105d7bd27621d (diff)
downloadscala-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/t3667.scala')
-rw-r--r--test/files/run/t3667.scala45
1 files changed, 45 insertions, 0 deletions
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)
+}