diff options
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 6237229c..99b6320e 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -2736,12 +2736,19 @@ private static Symbol tagOf(Object o){ } public static Object loadFile(String file) throws Exception{ - FileInputStream f = new FileInputStream(file); + File fo = new File(file); + if(!fo.exists()) + return null; + + FileInputStream f = new FileInputStream(fo); + try { Var.pushThreadBindings(RT.map(SOURCE_PATH, file, SOURCE, (new File(file)).getName())); - return load(f); + load(f); + + return RT.T; } finally { @@ -2752,6 +2759,7 @@ public static Object loadFile(String file) throws Exception{ public static Object load(InputStream s) throws Exception{ Object EOF = new Object(); + Object ret = null; try { Var.pushThreadBindings( @@ -2762,13 +2770,13 @@ public static Object load(InputStream s) throws Exception{ )); LineNumberingPushbackReader rdr = new LineNumberingPushbackReader(new InputStreamReader(s)); for(Object r = LispReader.read(rdr, false, EOF, false); r != EOF; r = LispReader.read(rdr, false, EOF, false)) - eval(r); + ret = eval(r); } finally { Var.popThreadBindings(); } - return RT.T; + return ret; } public static void main(String[] args){ |