summaryrefslogtreecommitdiff
path: root/test/files/pos/t7433.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-06-13 14:32:49 -0400
committerJason Zaugg <jzaugg@gmail.com>2013-06-23 23:09:22 +0200
commit58abe39c9d8d75bc2c5ca27e1b8c0c33de9e6824 (patch)
treebb763cf6126f2c1ee5997e87ba55e4a6353aef3a /test/files/pos/t7433.scala
parentf790662a3eab1e8efce5d4096d0efbae96cf45b4 (diff)
downloadscala-58abe39c9d8d75bc2c5ca27e1b8c0c33de9e6824.tar.gz
scala-58abe39c9d8d75bc2c5ca27e1b8c0c33de9e6824.tar.bz2
scala-58abe39c9d8d75bc2c5ca27e1b8c0c33de9e6824.zip
SI-7433 Fix spurious warning about catching control throwable
In the same vein as SI-6994, we have to be careful not to warn about synthetic code. In that case, the spurious warnings came because we warned in the typechecker, which was also called in erasure. In this case, we are issuing the warning in Uncurry, so we must be mindful of the pattern matchers translations of non-trivial catch patterns, which look like: case (ex8 @ _) => { <synthetic> val x5: Throwable = ex8; case11(){ if ({ case14(){ if (x5.$isInstanceOf[NullPointerException]()) matchEnd13(true) else case15() }; case15(){ if (x5.$isInstanceOf[RuntimeException]()) matchEnd13(true) else case16() }; case16(){ matchEnd13(false) }; matchEnd13(x: Boolean){ x } }) This commit detects that `ex8` is synthetic and disables the warning.
Diffstat (limited to 'test/files/pos/t7433.scala')
-rw-r--r--test/files/pos/t7433.scala10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/files/pos/t7433.scala b/test/files/pos/t7433.scala
new file mode 100644
index 0000000000..f2109f4afa
--- /dev/null
+++ b/test/files/pos/t7433.scala
@@ -0,0 +1,10 @@
+object Test {
+ def foo() {
+ try {
+ for (i <- 1 until 5) return
+ } catch {
+ case _: NullPointerException | _: RuntimeException =>
+ // was: "catch block may intercept non-local return from method check"
+ }
+ }
+}