blob: f30d57ce3ac2dbffe55eaf9bf9a04ddf2a6e5542 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
object Test {
def main(args: Array[String]) {
val o1 = new Outer1
val o2 = new Outer2
val o3 = new Outer3
val o4 = new Outer4
val o5 = new Outer5
val o6 = new Outer6
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))
println(4)
ser(new o4.Inner(1))
o4.Inner
ser(new o4.Inner(1))
println(2)
ser(new o5.Inner(1))
o5.Inner
ser(new o5.Inner(1))
println(3)
ser(new o6.Inner(1))
o6.Inner
ser(new o6.Inner(1))
foo
}
def foo {
case class C(x: Int)
ser(new C(1))
ser(C)
}
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)
}
class Outer4 extends Serializable {
class Inner(x: Int = 1) extends Serializable
}
class Outer5 extends Serializable {
case class Inner(x: Int = 1)
}
class Outer6 extends Serializable {
case class Inner(x: Int)
}
|