summaryrefslogtreecommitdiff
path: root/test/files/run/t7912.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-12-10 00:45:48 +0100
committerJason Zaugg <jzaugg@gmail.com>2013-12-10 00:56:26 +0100
commit006e2f2aadf5d15ff1b9b32f1b7e96960b778933 (patch)
tree9b15e2049fb10410aae1ec8606257e716fd4828d /test/files/run/t7912.scala
parent0c927046dc5df974e6c39187107cf3548825282b (diff)
downloadscala-006e2f2aadf5d15ff1b9b32f1b7e96960b778933.tar.gz
scala-006e2f2aadf5d15ff1b9b32f1b7e96960b778933.tar.bz2
scala-006e2f2aadf5d15ff1b9b32f1b7e96960b778933.zip
SI-7912 Be defensive calling `toString` in `MatchError#getMessage`
Otherwise, objects with exception-throwing `toString` lead to a cascading error far removed from the originally failed match.
Diffstat (limited to 'test/files/run/t7912.scala')
-rw-r--r--test/files/run/t7912.scala16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/files/run/t7912.scala b/test/files/run/t7912.scala
new file mode 100644
index 0000000000..3d603e0e97
--- /dev/null
+++ b/test/files/run/t7912.scala
@@ -0,0 +1,16 @@
+case object A { override def toString = ??? }
+
+object Test {
+ def foo: Int = (A: Any) match {
+ case 0 => 0
+ }
+ def main(args: Array[String]): Unit = {
+ try {
+ foo
+ sys.error("no exception")
+ } catch {
+ case me: MatchError => assert(me.getMessage == "an instance of class A$", me.getMessage)
+ case ex: Throwable => sys.error("not a match error: " + ex.getClass)
+ }
+ }
+}