summaryrefslogtreecommitdiff
path: root/test/files/jvm/t1143.scala
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2008-08-03 15:09:09 +0000
committerPhilipp Haller <hallerp@gmail.com>2008-08-03 15:09:09 +0000
commit70f7bb2dc10a2ebd1f9a4e447be54a3b0f709673 (patch)
tree69740d107efb0a246c584527b018261f892f59e8 /test/files/jvm/t1143.scala
parent8b067247579787aacc7d851ca597c3a3bc818641 (diff)
downloadscala-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.scala68
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]())
+ }
+}