aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-09-14 11:11:24 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-09-15 16:13:34 +0200
commita73fd7790c7ef788d8718b09b93e8ba494b31778 (patch)
tree043a5ccee5d5c2891b5ad6ea707fbb9729ad2960
parent70a8426912f6f256536470a046cdf86827ab2c93 (diff)
downloaddotty-a73fd7790c7ef788d8718b09b93e8ba494b31778.tar.gz
dotty-a73fd7790c7ef788d8718b09b93e8ba494b31778.tar.bz2
dotty-a73fd7790c7ef788d8718b09b93e8ba494b31778.zip
Allow try expression without catch or finally, issue warning
-rw-r--r--src/dotty/tools/dotc/parsing/Parsers.scala9
-rw-r--r--tests/pos/tryWithoutHandler.scala7
2 files changed, 14 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala
index 378aa6ed7..4bc706436 100644
--- a/src/dotty/tools/dotc/parsing/Parsers.scala
+++ b/src/dotty/tools/dotc/parsing/Parsers.scala
@@ -1010,8 +1010,13 @@ object Parsers {
expr()
} else EmptyTree
val finalizer =
- if (handler.isEmpty || in.token == FINALLY) { accept(FINALLY); expr() }
- else EmptyTree
+ if (in.token == FINALLY) { accept(FINALLY); expr() }
+ else {
+ if (handler.isEmpty)
+ warning("A try without `catch` or `finally` is equivalent to putting its body in a block; no exceptions are handled.")
+
+ EmptyTree
+ }
ParsedTry(body, handler, finalizer)
}
case THROW =>
diff --git a/tests/pos/tryWithoutHandler.scala b/tests/pos/tryWithoutHandler.scala
new file mode 100644
index 000000000..ffe334984
--- /dev/null
+++ b/tests/pos/tryWithoutHandler.scala
@@ -0,0 +1,7 @@
+object Test {
+ def main(args: Array[String]): Unit = {
+ try {
+ println("hello")
+ }
+ }
+}