summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-03-30 19:21:56 +0000
committerRich Hickey <richhickey@gmail.com>2008-03-30 19:21:56 +0000
commitc66601446550a1edac179bb1000dfa3bd5325b72 (patch)
tree59e7864bae8e59af9fcfafe7e391660007956d39 /src/jvm/clojure
parent399b5d348f906c8993909d6cdcedb034ba70bfa0 (diff)
disallow recur from catch/finally
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r--src/jvm/clojure/lang/Compiler.java2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 710aed70..c1d29eee 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -3234,6 +3234,8 @@ static class RecurExpr implements Expr{
IPersistentVector loopLocals = (IPersistentVector) LOOP_LOCALS.get();
if(context != C.RETURN || loopLocals == null)
throw new UnsupportedOperationException("Can only recur from tail position");
+ if(IN_CATCH_FINALLY.get()!=null)
+ throw new UnsupportedOperationException("Cannot recur from catch/finally");
PersistentVector args = PersistentVector.EMPTY;
for(ISeq s = RT.seq(form.rest()); s != null; s = s.rest())
{