diff options
author | Philipp Haller <hallerp@gmail.com> | 2010-04-28 15:26:22 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2010-04-28 15:26:22 +0000 |
commit | 231cfbe1c023ccf9e1bc437e5098f41b121fffa8 (patch) | |
tree | 815855c96eeac800a3957db4ec97c3c2539cef4a /test/files/jvm/t3365.scala | |
parent | 32cff2050f93bc6012b4354c0156b4f8e40f1719 (diff) | |
download | scala-231cfbe1c023ccf9e1bc437e5098f41b121fffa8.tar.gz scala-231cfbe1c023ccf9e1bc437e5098f41b121fffa8.tar.bz2 scala-231cfbe1c023ccf9e1bc437e5098f41b121fffa8.zip |
Closes #3365.
Diffstat (limited to 'test/files/jvm/t3365.scala')
-rw-r--r-- | test/files/jvm/t3365.scala | 65 |
1 files changed, 65 insertions, 0 deletions
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 + } +} |