summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2010-06-09 07:49:16 -0400
committerRich Hickey <richhickey@gmail.com>2010-06-09 07:49:16 -0400
commit50939687bbb85671ca1fecffac742cdb7e92737f (patch)
treea81f3018e577c0e31f2992077e9af13265124afb
parent4db0b1f9c37fc0581bc54f13c8dfbe66f8bf02dc (diff)
move exception handler in eval to properly retain line
-rw-r--r--src/jvm/clojure/lang/Compiler.java19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 54da1f52..4d6336f9 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -5581,8 +5581,8 @@ public static Object eval(Object form, boolean freshLoader) throws Exception{
{
ISeq s = RT.next(form);
for(; RT.next(s) != null; s = RT.next(s))
- eval(RT.first(s),false);
- return eval(RT.first(s),false);
+ eval(RT.first(s), false);
+ return eval(RT.first(s), false);
}
else if(form instanceof IPersistentCollection
&& !(RT.first(form) instanceof Symbol
@@ -5599,18 +5599,19 @@ public static Object eval(Object form, boolean freshLoader) throws Exception{
return expr.eval();
}
}
+ catch(Throwable e)
+ {
+ if(!(e instanceof CompilerException))
+ throw new CompilerException((String) SOURCE.deref(), (Integer) LINE.deref(), e);
+ else
+ throw (CompilerException) e;
+ }
finally
{
Var.popThreadBindings();
}
}
- catch(Throwable e)
- {
- if(!(e instanceof CompilerException))
- throw new CompilerException((String) SOURCE.deref(), (Integer) LINE.deref(), e);
- else
- throw (CompilerException) e;
- }
+
finally
{
if(createdLoader)