diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-03-30 19:21:56 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-03-30 19:21:56 +0000 |
commit | c66601446550a1edac179bb1000dfa3bd5325b72 (patch) | |
tree | 59e7864bae8e59af9fcfafe7e391660007956d39 /src/jvm/clojure | |
parent | 399b5d348f906c8993909d6cdcedb034ba70bfa0 (diff) |
disallow recur from catch/finally
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 2 |
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()) { |