summaryrefslogtreecommitdiff
path: root/test/files/jvm/t2511.scala
blob: eb57dc503deb345e9ced8b023c812c398e9e2e06 (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
object Test {

  import java.io._

  trait IMyMessage extends Serializable {
    @transient var message: String = null
    var message2: String = null
  }

  class MyMessage extends IMyMessage

  def serialize = {
    val buf = new ByteArrayOutputStream(10000)
    val out = new ObjectOutputStream(buf)
    val m = new MyMessage
    m.message = "foo"
    m.message2 = "bippy"
    out.writeObject(m)
    out.flush
    buf.toByteArray
  }

  def unserialize(buf:Array[Byte]) = {
    val in = new ObjectInputStream(new ByteArrayInputStream(buf))
    in.readObject.asInstanceOf[MyMessage]
  }

  def main(args: Array[String]) {
    val m = unserialize(serialize)
    // Xcheckinit freaks out here but its nullness is what we're testing
    try println(m.message)
    catch { case _: UninitializedFieldError => println("null") }
    println(m.message2)
  }
}