summaryrefslogtreecommitdiff
path: root/test/files/jvm/t1143-2/t1143-2.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/jvm/t1143-2/t1143-2.scala')
-rw-r--r--test/files/jvm/t1143-2/t1143-2.scala66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/files/jvm/t1143-2/t1143-2.scala b/test/files/jvm/t1143-2/t1143-2.scala
new file mode 100644
index 0000000000..58bc1d763e
--- /dev/null
+++ b/test/files/jvm/t1143-2/t1143-2.scala
@@ -0,0 +1,66 @@
+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 );
+}
+
+class Component extends Marker { }
+
+class Form extends Component { }
+
+@serializable
+@SerialVersionUID(1L)
+class Main {
+ var pass = "pass"
+ def main(args : Array[String]) : Unit = {
+ val f = new Form {
+ val p = new Printer( new VarModel( pass, pass=_ ) );
+ p.print
+ }
+ ()
+ }
+}
+
+object Test {
+ def main(args: Array[String]) {
+ (new Main).main(Array[String]())
+ }
+}