diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-12-07 13:15:45 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-12-07 13:15:45 +0000 |
commit | b5351815b3ac055168c218992a384d97646f0df5 (patch) | |
tree | f3c3abe5f196f1ad9af8ef92cbcb8bc1795e46a1 /src | |
parent | 999b2d83a37f98c0c2384a7e9f8a41f53665075a (diff) |
load returns value of last expression, loadFile returns nil if file does not exist, :t on successful load
Diffstat (limited to 'src')
-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){ |