diff options
author | Philipp Haller <hallerp@gmail.com> | 2010-03-24 17:31:37 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2010-03-24 17:31:37 +0000 |
commit | c80d4c8b3d5407bfd453da28d812560559bb4bab (patch) | |
tree | 518d620f3adf6a218fea4291fc3318337c4835cf /test/files | |
parent | 361799635196b1e2cc5dfdea569252cba3aa9ee1 (diff) | |
download | scala-c80d4c8b3d5407bfd453da28d812560559bb4bab.tar.gz scala-c80d4c8b3d5407bfd453da28d812560559bb4bab.tar.bz2 scala-c80d4c8b3d5407bfd453da28d812560559bb4bab.zip |
Adds tests for see #2017.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/jvm/actor-uncaught-exception.check | 7 | ||||
-rw-r--r-- | test/files/jvm/actor-uncaught-exception.scala | 47 |
2 files changed, 54 insertions, 0 deletions
diff --git a/test/files/jvm/actor-uncaught-exception.check b/test/files/jvm/actor-uncaught-exception.check new file mode 100644 index 0000000000..4bbd53ef6d --- /dev/null +++ b/test/files/jvm/actor-uncaught-exception.check @@ -0,0 +1,7 @@ +Uncaught exception in StartError +MyException: I don't want to run! +StartError exited for reason UncaughtException(StartError,None,MyException: I don't want to run!) +Uncaught exception in MessageError +Message: 'ping +MyException: No message for me! +MessageError exited for reason UncaughtException(MessageError,Some('ping),MyException: No message for me!) diff --git a/test/files/jvm/actor-uncaught-exception.scala b/test/files/jvm/actor-uncaught-exception.scala new file mode 100644 index 0000000000..e395638788 --- /dev/null +++ b/test/files/jvm/actor-uncaught-exception.scala @@ -0,0 +1,47 @@ +import scala.actors.{Actor, Exit} + +class MyException(msg: String) extends Exception(msg) { + override def fillInStackTrace() = this +} + +object Test { + + case object StartError extends Actor { + def act() { + throw new MyException("I don't want to run!") + } + } + + case object MessageError extends Actor { + def act() { + react { + case _ => throw new MyException("No message for me!") + } + } + } + + case object Supervisor extends Actor { + def act() { + trapExit = true + link(StartError) + link(MessageError) + StartError.start() + MessageError.start() + + Actor.loop { + react { + case Exit(actor, reason) => + println(actor + " exited for reason " + reason) + if (actor == StartError) + MessageError ! 'ping + else + exit() + } + } + } + } + + def main(args: Array[String]) { + Supervisor.start() + } +} |