summaryrefslogtreecommitdiff
path: root/test/files/jvm/actor-link-getstate.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/jvm/actor-link-getstate.scala')
-rw-r--r--test/files/jvm/actor-link-getstate.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/files/jvm/actor-link-getstate.scala b/test/files/jvm/actor-link-getstate.scala
new file mode 100644
index 0000000000..ec01757883
--- /dev/null
+++ b/test/files/jvm/actor-link-getstate.scala
@@ -0,0 +1,47 @@
+import scala.actors.{Actor, Exit}
+import scala.actors.Actor._
+
+case class MyException(text: String) extends Exception(text) {
+ override def fillInStackTrace() = this
+}
+
+object Slave extends Actor {
+ def act() {
+ loop {
+ react {
+ case 'doWork =>
+ Console.err.println("Done")
+ reply('done)
+ }
+ }
+ }
+}
+
+object Master extends Actor {
+ override def toString = "Master"
+ def act() {
+ link(Slave)
+ Slave ! 'doWork
+ react {
+ case 'done =>
+ throw new MyException("Master crashed")
+ }
+ }
+}
+
+object Test {
+
+ def main(args: Array[String]) {
+ actor {
+ self.trapExit = true
+ link(Slave)
+ Slave.start()
+ Master.start()
+ react {
+ case Exit(from, reason) if (from == Slave) =>
+ Console.err.println(Slave.getState)
+ }
+ }
+ }
+
+}