summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-10-08 11:31:06 +0000
committerRich Hickey <richhickey@gmail.com>2008-10-08 11:31:06 +0000
commit70f9afeac049e469d701bce1d6214f655f4323bc (patch)
treece529473f703530a459e298faf38fb22ce3259db /src/jvm/clojure
parentb66a3651835c6008c1564bd812a0bde62bff3c15 (diff)
added redirectable *err*, patch from Stephen C. Gilardi
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r--src/jvm/clojure/lang/Compiler.java10
-rw-r--r--src/jvm/clojure/lang/RT.java5
-rw-r--r--src/jvm/clojure/lang/Repl.java7
-rw-r--r--src/jvm/clojure/lang/Script.java3
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());
}
}
}