diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-10-08 11:31:06 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-10-08 11:31:06 +0000 |
commit | 70f9afeac049e469d701bce1d6214f655f4323bc (patch) | |
tree | ce529473f703530a459e298faf38fb22ce3259db /src/jvm/clojure | |
parent | b66a3651835c6008c1564bd812a0bde62bff3c15 (diff) |
added redirectable *err*, patch from Stephen C. Gilardi
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 10 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 5 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Repl.java | 7 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Script.java | 3 |
4 files changed, 15 insertions, 10 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 4b6c9ab7..06da69ae 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -846,7 +846,7 @@ static class InstanceFieldExpr extends FieldExpr implements AssignableExpr{ this.line = line; if(field == null && RT.booleanCast(RT.WARN_ON_REFLECTION.get())) { - System.err.format("Reflection warning, line: %d - reference to field %s can't be resolved.\n", line, + ((PrintWriter)RT.ERR.get()).format("Reflection warning, line: %d - reference to field %s can't be resolved.\n", line, fieldName); } } @@ -1045,7 +1045,7 @@ static abstract class MethodExpr extends HostExpr{ } catch(Exception e1) { - e1.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. + e1.printStackTrace((PrintWriter)RT.ERR.get()); //To change body of catch statement use File | Settings | File Templates. } } @@ -1102,7 +1102,7 @@ static class InstanceMethodExpr extends MethodExpr{ if(method == null && RT.booleanCast(RT.WARN_ON_REFLECTION.get())) { - System.err.format("Reflection warning, line: %d - call to %s can't be resolved.\n", line, methodName); + ((PrintWriter)RT.ERR.get()).format("Reflection warning, line: %d - call to %s can't be resolved.\n", line, methodName); } } @@ -1237,7 +1237,7 @@ static class StaticMethodExpr extends MethodExpr{ method = (java.lang.reflect.Method) (methodidx >= 0 ? methods.get(methodidx) : null); if(method == null && RT.booleanCast(RT.WARN_ON_REFLECTION.get())) { - System.err.format("Reflection warning, line: %d - call to %s can't be resolved.\n", line, methodName); + ((PrintWriter)RT.ERR.get()).format("Reflection warning, line: %d - call to %s can't be resolved.\n", line, methodName); } } @@ -2060,7 +2060,7 @@ public static class NewExpr implements Expr{ this.ctor = ctoridx >= 0 ? (Constructor) ctors.get(ctoridx) : null; if(ctor == null && RT.booleanCast(RT.WARN_ON_REFLECTION.get())) { - System.err.format("Reflection warning, line: %d - call to %s ctor can't be resolved.\n", line, c.getName()); + ((PrintWriter)RT.ERR.get()).format("Reflection warning, line: %d - call to %s ctor can't be resolved.\n", line, c.getName()); } } diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 0a891bf2..30b9ed31 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -171,6 +171,9 @@ final static public Var OUT = final static public Var IN = Var.intern(CLOJURE_NS, Symbol.create("*in*"), new LineNumberingPushbackReader(new InputStreamReader(System.in, UTF8))); +final static public Var ERR = + Var.intern(CLOJURE_NS, Symbol.create("*err*"), + new PrintWriter(new OutputStreamWriter(System.err, UTF8), true)); final static Keyword TAG_KEY = Keyword.intern(null, "tag"); final static public Var AGENT = Var.intern(CLOJURE_NS, Symbol.create("*agent*"), null); final static public Var MACRO_META = Var.intern(CLOJURE_NS, Symbol.create("*macro-meta*"), null); @@ -368,7 +371,7 @@ public static void loadResourceScript(Class c, String name, boolean failIfNotFou } static public void init() throws Exception{ - System.err.println("No need to call RT.init() anymore"); + ((PrintWriter)RT.ERR.get()).println("No need to call RT.init() anymore"); } static void doInit() throws Exception{ diff --git a/src/jvm/clojure/lang/Repl.java b/src/jvm/clojure/lang/Repl.java index 5ad59bbc..1c065dd2 100644 --- a/src/jvm/clojure/lang/Repl.java +++ b/src/jvm/clojure/lang/Repl.java @@ -14,6 +14,7 @@ package clojure.lang; import java.io.InputStreamReader; import java.io.OutputStreamWriter; +import java.io.PrintWriter; public class Repl{ static final Symbol USER = Symbol.create("user"); @@ -58,7 +59,7 @@ public static void main(String[] args) throws Exception{ } catch(Exception e) { - e.printStackTrace(); + e.printStackTrace((PrintWriter)RT.ERR.get()); } //repl IO support @@ -94,14 +95,14 @@ public static void main(String[] args) throws Exception{ Throwable c = e; while(c.getCause() != null) c = c.getCause(); - System.err.println(e instanceof Compiler.CompilerException ? e : c); + ((PrintWriter)RT.ERR.get()).println(e instanceof Compiler.CompilerException ? e : c); stare.set(e); } } } catch(Exception e) { - e.printStackTrace(); + e.printStackTrace((PrintWriter)RT.ERR.get()); } finally { diff --git a/src/jvm/clojure/lang/Script.java b/src/jvm/clojure/lang/Script.java index a14c9600..148b4869 100644 --- a/src/jvm/clojure/lang/Script.java +++ b/src/jvm/clojure/lang/Script.java @@ -13,6 +13,7 @@ package clojure.lang; import java.io.OutputStreamWriter; +import java.io.PrintWriter; import java.io.IOException; import java.util.List; import java.util.Arrays; @@ -75,7 +76,7 @@ public static void main(String[] args) throws Exception{ } catch(IOException e) { - e.printStackTrace(); + e.printStackTrace((PrintWriter)RT.ERR.get()); } } } |