summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-11-22 17:31:20 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-11-22 17:31:20 -0800
commit2f7396d97f99f4ed2817566f36416e16b10b7ffc (patch)
treeb3eeebb2d9f83d635d6223e3ebcb0d94dae76f87
parent112ae862e0530c4e1148c2e67997e4c242c566bd (diff)
parent64603653f82082431941cb29ad317b669822f28e (diff)
downloadscala-2f7396d97f99f4ed2817566f36416e16b10b7ffc.tar.gz
scala-2f7396d97f99f4ed2817566f36416e16b10b7ffc.tar.bz2
scala-2f7396d97f99f4ed2817566f36416e16b10b7ffc.zip
Merge pull request #3182 from soc/SI-7999
s.u.c.NonFatal: StackOverflowError is fatal
-rw-r--r--src/library/scala/util/control/NonFatal.scala4
-rw-r--r--test/files/jvm/non-fatal-tests.scala4
2 files changed, 3 insertions, 5 deletions
diff --git a/src/library/scala/util/control/NonFatal.scala b/src/library/scala/util/control/NonFatal.scala
index 11fb988e8e..9d3dfea074 100644
--- a/src/library/scala/util/control/NonFatal.scala
+++ b/src/library/scala/util/control/NonFatal.scala
@@ -11,9 +11,8 @@ package util.control
/**
* Extractor of non-fatal Throwables. Will not match fatal errors like `VirtualMachineError`
- * (for example, `OutOfMemoryError`, a subclass of `VirtualMachineError`), `ThreadDeath`,
+ * (for example, `OutOfMemoryError` and `StackOverflowError`, subclasses of `VirtualMachineError`), `ThreadDeath`,
* `LinkageError`, `InterruptedException`, `ControlThrowable`.
- * However, `StackOverflowError` is matched, i.e. considered non-fatal.
*
* Note that [[scala.util.control.ControlThrowable]], an internal Throwable, is not matched by
* `NonFatal` (and would therefore be thrown).
@@ -34,7 +33,6 @@ object NonFatal {
* Returns true if the provided `Throwable` is to be considered non-fatal, or false if it is to be considered fatal
*/
def apply(t: Throwable): Boolean = t match {
- case _: StackOverflowError => true // StackOverflowError ok even though it is a VirtualMachineError
// VirtualMachineError includes OutOfMemoryError and other fatal errors
case _: VirtualMachineError | _: ThreadDeath | _: InterruptedException | _: LinkageError | _: ControlThrowable => false
case _ => true
diff --git a/test/files/jvm/non-fatal-tests.scala b/test/files/jvm/non-fatal-tests.scala
index 791b1d3100..1ff7ee516e 100644
--- a/test/files/jvm/non-fatal-tests.scala
+++ b/test/files/jvm/non-fatal-tests.scala
@@ -4,8 +4,7 @@ trait NonFatalTests {
//NonFatals
val nonFatals: Seq[Throwable] =
- Seq(new StackOverflowError,
- new RuntimeException,
+ Seq(new RuntimeException,
new Exception,
new Throwable,
new NotImplementedError)
@@ -13,6 +12,7 @@ trait NonFatalTests {
//Fatals
val fatals: Seq[Throwable] =
Seq(new InterruptedException,
+ new StackOverflowError,
new OutOfMemoryError,
new LinkageError,
new VirtualMachineError {},