diff options
author | Paul Phillips <paulp@improving.org> | 2012-09-25 23:06:56 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-09-26 08:07:58 -0700 |
commit | 25d03629d87861640fc9d56d4378b985dfb7efd3 (patch) | |
tree | eaa4f0a259e98181c23fa31c6dc9a1583cf18173 /src/compiler/scala/tools/nsc/transform/UnCurry.scala | |
parent | 9904301752c2aa8c8509f1bcd6108f626220524a (diff) | |
download | scala-25d03629d87861640fc9d56d4378b985dfb7efd3.tar.gz scala-25d03629d87861640fc9d56d4378b985dfb7efd3.tar.bz2 scala-25d03629d87861640fc9d56d4378b985dfb7efd3.zip |
Annotate non local returns with @unchecked.
Newly available @unchecked annotation enables removing the
special case from the unchecked logic.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/UnCurry.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/UnCurry.scala | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala index 5a3db26e30..d3a5cebea0 100644 --- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala +++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala @@ -185,7 +185,7 @@ abstract class UnCurry extends InfoTransform * try { * body * } catch { - * case ex: NonLocalReturnControl[_] => + * case ex: NonLocalReturnControl[T @unchecked] => * if (ex.key().eq(key)) ex.value() * else throw ex * } @@ -195,7 +195,8 @@ abstract class UnCurry extends InfoTransform localTyper typed { val extpe = nonLocalReturnExceptionType(meth.tpe.finalResultType) val ex = meth.newValue(nme.ex, body.pos) setInfo extpe - val pat = gen.mkBindForCase(ex, NonLocalReturnControlClass, List(meth.tpe.finalResultType)) + val argType = meth.tpe.finalResultType withAnnotation (AnnotationInfo marker UncheckedClass.tpe) + val pat = gen.mkBindForCase(ex, NonLocalReturnControlClass, List(argType)) val rhs = ( IF ((ex DOT nme.key)() OBJ_EQ Ident(key)) THEN ((ex DOT nme.value)()) |