aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-05-17 14:11:39 +0200
committerMartin Odersky <odersky@gmail.com>2013-05-17 14:11:39 +0200
commit62fe4b6ec456b4878a642aa7e98886b0c9d4c9dd (patch)
tree82922d366e6118e35b8ceba0e335356ca1e3ef22 /src
parent94b9a2a0d083cca2ba1358582d8d6fd8143b0b31 (diff)
downloaddotty-62fe4b6ec456b4878a642aa7e98886b0c9d4c9dd.tar.gz
dotty-62fe4b6ec456b4878a642aa7e98886b0c9d4c9dd.tar.bz2
dotty-62fe4b6ec456b4878a642aa7e98886b0c9d4c9dd.zip
Fix to typechecking of Try nodes.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/core/TypedTrees.scala11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/dotty/tools/dotc/core/TypedTrees.scala b/src/dotty/tools/dotc/core/TypedTrees.scala
index c349ec080..b564c0e2c 100644
--- a/src/dotty/tools/dotc/core/TypedTrees.scala
+++ b/src/dotty/tools/dotc/core/TypedTrees.scala
@@ -445,15 +445,12 @@ object TypedTrees {
case Return(expr, from) =>
check(expr.isValue); check(from.isTerm)
check(from.tpe.termSymbol.isSourceMethod)
- case Try(block, catches, finalizer) =>
+ case Try(block, handler, finalizer) =>
check(block.isTerm)
check(finalizer.isTerm)
- // TODO: check handler.isTerm && handler >: Throwable => Nothing ???
- /*
- for (ctch <- catches)
- check(ctch.pat.tpe.derivesFrom(defn.ThrowableClass))
- *
- */
+ check(handler.isTerm)
+ check(handler.tpe derivesFrom defn.FunctionClass(1))
+ check(handler.tpe.baseType(defn.FunctionClass(1)).typeArgs.head <:< defn.ThrowableType)
case Throw(expr) =>
check(expr.isValue)
check(expr.tpe.derivesFrom(defn.ThrowableClass))