summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2010-04-28 15:26:22 +0000
committerPhilipp Haller <hallerp@gmail.com>2010-04-28 15:26:22 +0000
commit231cfbe1c023ccf9e1bc437e5098f41b121fffa8 (patch)
tree815855c96eeac800a3957db4ec97c3c2539cef4a /test/files
parent32cff2050f93bc6012b4354c0156b4f8e40f1719 (diff)
downloadscala-231cfbe1c023ccf9e1bc437e5098f41b121fffa8.tar.gz
scala-231cfbe1c023ccf9e1bc437e5098f41b121fffa8.tar.bz2
scala-231cfbe1c023ccf9e1bc437e5098f41b121fffa8.zip
Closes #3365.
Diffstat (limited to 'test/files')
-rw-r--r--test/files/jvm/t3365.check5
-rw-r--r--test/files/jvm/t3365.scala65
2 files changed, 70 insertions, 0 deletions
diff --git a/test/files/jvm/t3365.check b/test/files/jvm/t3365.check
new file mode 100644
index 0000000000..0944b17279
--- /dev/null
+++ b/test/files/jvm/t3365.check
@@ -0,0 +1,5 @@
+'hello
+'hello
+'hello
+'hello
+'hello
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
+ }
+}