diff options
author | paltherr <paltherr@epfl.ch> | 2003-08-08 08:45:13 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-08-08 08:45:13 +0000 |
commit | 3efa683e960abba02444c816423383b8233b0158 (patch) | |
tree | d0b3fa104af7eaf5b06cd2332de30385b95344cf | |
parent | 34ddfde6bd02e59f3e832deed6cfea89dde4a4fd (diff) | |
download | scala-3efa683e960abba02444c816423383b8233b0158.tar.gz scala-3efa683e960abba02444c816423383b8233b0158.tar.bz2 scala-3efa683e960abba02444c816423383b8233b0158.zip |
- Added printing of cause
- Added some flushes
-rw-r--r-- | sources/scala/tools/scalai/EvaluatorException.java | 25 | ||||
-rw-r--r-- | sources/scala/tools/scalai/InterpreterPrinter.java | 8 |
2 files changed, 25 insertions, 8 deletions
diff --git a/sources/scala/tools/scalai/EvaluatorException.java b/sources/scala/tools/scalai/EvaluatorException.java index a0d9f3e80d..1bd0eb9227 100644 --- a/sources/scala/tools/scalai/EvaluatorException.java +++ b/sources/scala/tools/scalai/EvaluatorException.java @@ -8,6 +8,8 @@ package scalai; +import java.io.StringWriter; +import java.io.PrintWriter; import java.util.List; import java.util.ArrayList; @@ -94,12 +96,23 @@ public class EvaluatorException extends RuntimeException { } public String getScalaErrorMessage(boolean withTrace) { - String line = System.getProperty("line.separator", "\n"); - StringBuffer buffer = new StringBuffer(); - buffer.append(getCause().toString()); - if (withTrace) - for (int i = 0; i < stack.size(); i++) - buffer.append(line).append(" at ").append(stack.get(i)); + StringWriter buffer = new StringWriter(); + PrintWriter writer = new PrintWriter(buffer); + Throwable exception = getCause(); + writer.print(exception.toString()); + if (withTrace) { + writer.println(); + for (int i = 0; i < stack.size(); i++) { + writer.print(" at "); + writer.println(stack.get(i)); + } + Throwable cause = exception.getCause(); + if (cause != null) { + writer.print("Caused by "); + cause.printStackTrace(writer); + } + } + writer.close(); return buffer.toString(); } diff --git a/sources/scala/tools/scalai/InterpreterPrinter.java b/sources/scala/tools/scalai/InterpreterPrinter.java index 1e30bfba29..85ef569be1 100644 --- a/sources/scala/tools/scalai/InterpreterPrinter.java +++ b/sources/scala/tools/scalai/InterpreterPrinter.java @@ -42,10 +42,12 @@ public class InterpreterPrinter implements DefinitionPrinter { switch (result) { case Value(Object string, _): writer.println(signature + " = " + string); + writer.flush(); return; case Error(EvaluatorException exception): writer.print(signature + " = "); - writer.println(exception.getScalaErrorMessage(true)); + writer.print(exception.getScalaErrorMessage(true)); + writer.flush(); return; default: throw Debug.abort("illegal case", result); @@ -62,11 +64,13 @@ public class InterpreterPrinter implements DefinitionPrinter { writer.println(value + ": " + type); else showResult(interpreter.toString(value, type), interactive); + writer.flush(); return; case Error(EvaluatorException exception): String name = Thread.currentThread().getName(); writer.print("Exception in thread \"" + name + "\" "); - writer.println(exception.getScalaErrorMessage(true)); + writer.print(exception.getScalaErrorMessage(true)); + writer.flush(); return; default: throw Debug.abort("illegal case", result); |