diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/BytecodeCompiler.java | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/src/jvm/clojure/lang/BytecodeCompiler.java b/src/jvm/clojure/lang/BytecodeCompiler.java index 600d5902..d4c63fe0 100644 --- a/src/jvm/clojure/lang/BytecodeCompiler.java +++ b/src/jvm/clojure/lang/BytecodeCompiler.java @@ -1536,28 +1536,39 @@ public static void main(String[] args){ LineNumberingPushbackReader rdr = new LineNumberingPushbackReader(new InputStreamReader(System.in)); OutputStreamWriter w = new OutputStreamWriter(System.out); Object EOF = new Object(); - for(; ;) + try { - try - { - Var.pushThreadBindings( - RT.map(LOADER, new DynamicClassLoader())); - Object r = LispReader.read(rdr, false, EOF, false); - if(r == EOF) - break; - Object ret = eval(r); - RT.print(ret, w); - w.write('\n'); - w.flush(); - } - catch(Exception e) - { - e.printStackTrace(); - } - finally + Var.pushThreadBindings( + RT.map(RT.USES, RT.USES.get(), + RT.IMPORTS, RT.IMPORTS.get())); + + for(; ;) { - Var.popThreadBindings(); + try + { + Var.pushThreadBindings( + RT.map(LOADER, new DynamicClassLoader())); + Object r = LispReader.read(rdr, false, EOF, false); + if(r == EOF) + break; + Object ret = eval(r); + RT.print(ret, w); + w.write('\n'); + w.flush(); + } + catch(Exception e) + { + e.printStackTrace(); + } + finally + { + Var.popThreadBindings(); + } } } + finally + { + Var.popThreadBindings(); + } } } |