diff options
author | Philipp Haller <hallerp@gmail.com> | 2008-08-03 15:09:09 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2008-08-03 15:09:09 +0000 |
commit | 70f7bb2dc10a2ebd1f9a4e447be54a3b0f709673 (patch) | |
tree | 69740d107efb0a246c584527b018261f892f59e8 /test/files/jvm/t1143.scala | |
parent | 8b067247579787aacc7d851ca597c3a3bc818641 (diff) | |
download | scala-70f7bb2dc10a2ebd1f9a4e447be54a3b0f709673.tar.gz scala-70f7bb2dc10a2ebd1f9a4e447be54a3b0f709673.tar.bz2 scala-70f7bb2dc10a2ebd1f9a4e447be54a3b0f709673.zip |
Moved tests from jvm5 to jvm.
Diffstat (limited to 'test/files/jvm/t1143.scala')
-rw-r--r-- | test/files/jvm/t1143.scala | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/test/files/jvm/t1143.scala b/test/files/jvm/t1143.scala new file mode 100644 index 0000000000..4f4557a2d6 --- /dev/null +++ b/test/files/jvm/t1143.scala @@ -0,0 +1,68 @@ +object Serialize { + @throws(classOf[java.io.IOException]) + def write[A](o: A): Array[Byte] = { + val ba = new java.io.ByteArrayOutputStream(512) + val out = new java.io.ObjectOutputStream(ba) + out.writeObject(o) + out.close() + ba.toByteArray() + } + @throws(classOf[java.io.IOException]) + @throws(classOf[ClassNotFoundException]) + def read[A](buffer: Array[Byte]): A = { + val in = + new java.io.ObjectInputStream(new java.io.ByteArrayInputStream(buffer)) + in.readObject().asInstanceOf[A] + } +} + +@serializable +@SerialVersionUID(1L) +class VarModel[T](getter: => T, setter: T => Unit) { + Serialize.write(getter) + Serialize.write(setter) + + def this(getter: => T) = this(getter, null) + + def getObject: AnyRef = getter.asInstanceOf[AnyRef] + + def setObject(v: AnyRef) = { + if (setter == null) + throw new RuntimeException("Tried to set readonly model!") + setter(v.asInstanceOf[T]) + } + + def detach = () +} + +@serializable +@SerialVersionUID(1L) +class Printer(p: VarModel[String]) { + def print = println(p.getObject) +} + +@serializable +@SerialVersionUID(1L) +class Component { +} + +class Form extends Component { +} + +@serializable +@SerialVersionUID(1L) +class Main { + var pass = "pass" + def main(args: Array[String]) { + val f = new Form { + val p = new Printer(new VarModel(pass, pass=_)) + } + () + } +} + +object Test { + def main(args: Array[String]) { + (new Main).main(Array[String]()) + } +} |