aboutsummaryrefslogtreecommitdiff
path: root/tests/run/virtpatmat_try.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-06-25 09:45:27 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-07-13 15:31:16 +0200
commitef536f00d9d480f28db3093b9dc09a90041cfb74 (patch)
treeca82afa7a37ce866978b0b66904941672f2dacc3 /tests/run/virtpatmat_try.scala
parent9185428b63b138f8c05ade5592e59956296b5128 (diff)
downloaddotty-ef536f00d9d480f28db3093b9dc09a90041cfb74.tar.gz
dotty-ef536f00d9d480f28db3093b9dc09a90041cfb74.tar.bz2
dotty-ef536f00d9d480f28db3093b9dc09a90041cfb74.zip
Enable 61 tests that succeed.
Diffstat (limited to 'tests/run/virtpatmat_try.scala')
-rw-r--r--tests/run/virtpatmat_try.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/run/virtpatmat_try.scala b/tests/run/virtpatmat_try.scala
new file mode 100644
index 000000000..2cd05b799
--- /dev/null
+++ b/tests/run/virtpatmat_try.scala
@@ -0,0 +1,47 @@
+object Test extends dotty.runtime.LegacyApp {
+ case class A(val x: String) extends Throwable
+ class B extends Exception { override def toString = "B" }
+ def bla = 0
+
+ try {
+ throw new A("meh")
+ } catch { // this should emit a "catch-switch"
+ case y: A => println(y.x)
+ case (_ : A | _ : B) => println("B")
+ case _: Throwable => println("other")
+ }
+
+ try {
+ throw new B()
+ } catch { // case classes and alternative flattening aren't supported yet, but could be in principle
+ // case A(x) => println(x)
+ case y: A => println(y.x)
+ case x@((_ : A) | (_ : B)) => println(x)
+ case _: Throwable => println("other")
+ }
+
+ def simpleTry: Unit = {
+ try {
+ bla
+ } catch {
+ case x: Exception if x.getMessage == "test" => println("first case " + x)
+ case x: Exception => println("second case " + x)
+ }
+ }
+
+ def typedWildcardTry: Unit = {
+ try { bla } catch { case _: ClassCastException => bla }
+ }
+
+ def wildcardTry: Unit = {
+ try { bla } catch { case _: Throwable => bla }
+ }
+
+ def tryPlusFinally: Unit = {
+ try { bla } finally { println("finally") }
+ }
+
+ def catchAndPassToLambda: Unit = {
+ try { bla } catch { case ex: Exception => val f = () => ex }
+ }
+}