diff options
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/UnCurry.scala | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala index 64f4e579e1..e2ce2743f7 100644 --- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala +++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala @@ -187,8 +187,14 @@ abstract class UnCurry extends InfoTransform val keyDef = ValDef(key, New(ObjectTpe)) val tryCatch = Try(body, pat -> rhs) - for (Try(t, catches, _) <- body ; cdef <- catches ; if treeInfo catchesThrowable cdef) + import treeInfo.{catchesThrowable, isSyntheticCase} + for { + Try(t, catches, _) <- body + cdef <- catches + if catchesThrowable(cdef) && !isSyntheticCase(cdef) + } { unit.warning(body.pos, "catch block may intercept non-local return from " + meth) + } Block(List(keyDef), tryCatch) } |