From 231cfbe1c023ccf9e1bc437e5098f41b121fffa8 Mon Sep 17 00:00:00 2001 From: Philipp Haller Date: Wed, 28 Apr 2010 15:26:22 +0000 Subject: Closes #3365. --- test/files/jvm/t3365.scala | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 test/files/jvm/t3365.scala (limited to 'test/files/jvm/t3365.scala') diff --git a/test/files/jvm/t3365.scala b/test/files/jvm/t3365.scala new file mode 100644 index 0000000000..b94e804e63 --- /dev/null +++ b/test/files/jvm/t3365.scala @@ -0,0 +1,65 @@ +import scala.actors.{ReplyReactor, Channel, Actor, Future} + +case class ChannelMsg(chan: Channel[Any]) + +class MyActor extends Actor { + def act() { + try { + val chan = new Channel[Any](this) + loop { + react { + case other: ReplyReactor => + other ! ChannelMsg(chan) + loop { + chan.react { + case 'hello => + reply('hello) + case 'stop => + exit() + } + } + } + } + } catch { + case e: Throwable if !e.isInstanceOf[scala.util.control.ControlThrowable] => + e.printStackTrace() + } + } +} + +object Test { + def main(args: Array[String]) { + val a = new MyActor + a.start() + + val b = new Actor { + def act() { + try { + react { + case ChannelMsg(c) => + var i = 0 + loop { + i += 1 + val ft: Future[Any] = c !! 'hello + ft.inputChannel.react { + case msg => + if (i % 10000 == 0) + println(msg) + if (i >= 50000) { + c ! 'stop + exit() + } + } + } + } + } catch { + case e: Throwable if !e.isInstanceOf[scala.util.control.ControlThrowable] => + e.printStackTrace() + } + } + } + b.start() + + a ! b + } +} -- cgit v1.2.3