diff options
author | Martin Odersky <odersky@gmail.com> | 2013-05-17 14:11:39 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-05-17 14:11:39 +0200 |
commit | 62fe4b6ec456b4878a642aa7e98886b0c9d4c9dd (patch) | |
tree | 82922d366e6118e35b8ceba0e335356ca1e3ef22 | |
parent | 94b9a2a0d083cca2ba1358582d8d6fd8143b0b31 (diff) | |
download | dotty-62fe4b6ec456b4878a642aa7e98886b0c9d4c9dd.tar.gz dotty-62fe4b6ec456b4878a642aa7e98886b0c9d4c9dd.tar.bz2 dotty-62fe4b6ec456b4878a642aa7e98886b0c9d4c9dd.zip |
Fix to typechecking of Try nodes.
-rw-r--r-- | src/dotty/tools/dotc/core/TypedTrees.scala | 11 |
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)) |