summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-08-08 08:45:13 +0000
committerpaltherr <paltherr@epfl.ch>2003-08-08 08:45:13 +0000
commit3efa683e960abba02444c816423383b8233b0158 (patch)
treed0b3fa104af7eaf5b06cd2332de30385b95344cf /sources
parent34ddfde6bd02e59f3e832deed6cfea89dde4a4fd (diff)
downloadscala-3efa683e960abba02444c816423383b8233b0158.tar.gz
scala-3efa683e960abba02444c816423383b8233b0158.tar.bz2
scala-3efa683e960abba02444c816423383b8233b0158.zip
- Added printing of cause
- Added some flushes
Diffstat (limited to 'sources')
-rw-r--r--sources/scala/tools/scalai/EvaluatorException.java25
-rw-r--r--sources/scala/tools/scalai/InterpreterPrinter.java8
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);