diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index c7ebc814..78339688 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -1439,10 +1439,7 @@ static class TryExpr implements Expr{ CatchClause clause = (CatchClause) catchExprs.nth(i); clause.label = gen.newLabel(); clause.endLabel = gen.newLabel(); - gen.visitTryCatchBlock(startTry, endTry, clause.label, clause.c.getName().replace('.', '/')); } - if(finallyExpr != null) - gen.visitTryCatchBlock(startTry, endTry, finallyLabel, null); gen.mark(startTry); tryExpr.emit(context, fn, gen); @@ -1476,6 +1473,13 @@ static class TryExpr implements Expr{ for(int i = 0; i < catchExprs.count(); i++) { CatchClause clause = (CatchClause) catchExprs.nth(i); + gen.visitTryCatchBlock(startTry, endTry, clause.label, clause.c.getName().replace('.', '/')); + } + if(finallyExpr != null) + gen.visitTryCatchBlock(startTry, endTry, finallyLabel, null); + for(int i = 0; i < catchExprs.count(); i++) + { + CatchClause clause = (CatchClause) catchExprs.nth(i); gen.visitLocalVariable(clause.lb.name, "Ljava/lang/Object;", null, clause.label, clause.endLabel, clause.lb.idx); } |