summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2010-03-24 17:29:59 +0000
committerPhilipp Haller <hallerp@gmail.com>2010-03-24 17:29:59 +0000
commit361799635196b1e2cc5dfdea569252cba3aa9ee1 (patch)
treec592b57463ef1079c85a4fd592a9b87f7f26a167 /test
parenta09cf5dbf7ed64e1ff52bebb53971d16304b58e5 (diff)
downloadscala-361799635196b1e2cc5dfdea569252cba3aa9ee1.tar.gz
scala-361799635196b1e2cc5dfdea569252cba3aa9ee1.tar.bz2
scala-361799635196b1e2cc5dfdea569252cba3aa9ee1.zip
Addresses see #2017.
Diffstat (limited to 'test')
-rw-r--r--test/files/jvm/actor-exceptions.check14
-rw-r--r--test/files/jvm/actor-exceptions.scala20
-rw-r--r--test/files/jvm/actor-executor.scala10
-rw-r--r--test/files/jvm/actor-link-getstate.check3
-rw-r--r--test/files/jvm/actor-link-getstate.scala7
5 files changed, 32 insertions, 22 deletions
diff --git a/test/files/jvm/actor-exceptions.check b/test/files/jvm/actor-exceptions.check
index 021ccea1f1..bd44b968cc 100644
--- a/test/files/jvm/actor-exceptions.check
+++ b/test/files/jvm/actor-exceptions.check
@@ -1,11 +1,3 @@
-problem
-received A
-problem
-received A
-problem
-received A
-problem
-received A
-problem
-received last A
-slave exited because of java.lang.Exception: unhandled
+Uncaught exception in Slave
+Message: A
+MyOtherException
diff --git a/test/files/jvm/actor-exceptions.scala b/test/files/jvm/actor-exceptions.scala
index ccec84c56c..77bf05c048 100644
--- a/test/files/jvm/actor-exceptions.scala
+++ b/test/files/jvm/actor-exceptions.scala
@@ -2,7 +2,13 @@
import scala.actors.{Actor, Exit}
import Actor._
-case class MyException(text: String) extends Exception
+case class MyException(text: String) extends Exception {
+ override def fillInStackTrace() = this
+}
+
+case class MyOtherException(text: String) extends Exception {
+ override def fillInStackTrace() = this
+}
object Master extends Actor {
trapExit = true
@@ -11,14 +17,15 @@ object Master extends Actor {
Slave.start()
for (i <- 0 until 10) Slave ! A
react {
- case Exit(from, reason) => println("slave exited because of "+reason)
+ case Exit(from, reason) =>
}
}
}
object Slave extends Actor {
+ override def toString = "Slave"
override def exceptionHandler: PartialFunction[Exception, Unit] = {
- case MyException(text) => println(text)
+ case MyException(text) =>
}
def act() {
var cnt = 0
@@ -27,11 +34,8 @@ object Slave extends Actor {
case A =>
cnt += 1
if (cnt % 2 != 0) throw MyException("problem")
- if (cnt < 10)
- println("received A")
- else {
- println("received last A")
- throw new Exception("unhandled")
+ if (cnt == 10) {
+ throw new MyOtherException("unhandled")
}
}
}
diff --git a/test/files/jvm/actor-executor.scala b/test/files/jvm/actor-executor.scala
index e650043382..435c666fff 100644
--- a/test/files/jvm/actor-executor.scala
+++ b/test/files/jvm/actor-executor.scala
@@ -47,9 +47,15 @@ object Test {
val scheduler =
new SchedulerAdapter {
def execute(block: => Unit) {
- executor.execute(new Runnable {
+ val task = new Runnable {
def run() { block }
- })
+ }
+ try {
+ executor.execute(task)
+ } catch {
+ case ree: java.util.concurrent.RejectedExecutionException =>
+ task.run()
+ }
}
}
diff --git a/test/files/jvm/actor-link-getstate.check b/test/files/jvm/actor-link-getstate.check
index 9755447320..45967222e6 100644
--- a/test/files/jvm/actor-link-getstate.check
+++ b/test/files/jvm/actor-link-getstate.check
@@ -1,2 +1,5 @@
Done
+Uncaught exception in Master
+Message: 'done
+MyException: Master crashed
Terminated
diff --git a/test/files/jvm/actor-link-getstate.scala b/test/files/jvm/actor-link-getstate.scala
index 955ea45499..cdfc8d6310 100644
--- a/test/files/jvm/actor-link-getstate.scala
+++ b/test/files/jvm/actor-link-getstate.scala
@@ -1,6 +1,10 @@
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 {
@@ -14,12 +18,13 @@ object Slave extends Actor {
}
object Master extends Actor {
+ override def toString = "Master"
def act() {
link(Slave)
Slave ! 'doWork
react {
case 'done =>
- throw new Exception("Master crashed")
+ throw new MyException("Master crashed")
}
}
}