mxd 5 år sedan
förälder
incheckning
00ada85bc0

+ 13 - 1
src/main/java/org/ssssssss/script/MagicScriptError.java

@@ -4,6 +4,8 @@ import org.ssssssss.script.exception.MagicScriptException;
 import org.ssssssss.script.parsing.Span;
 import org.ssssssss.script.parsing.TokenStream;
 
+import java.lang.reflect.InvocationTargetException;
+
 /**
  * All errors reported by the library go through the static functions of this class.
  */
@@ -35,6 +37,17 @@ public class MagicScriptError {
 	public static void error(String message, Span location, Throwable cause) {
 
 		Span.Line line = location.getLine();
+		Throwable parent = cause == null ? null : cause.getCause();
+		while (parent != null) {
+			if (parent instanceof InvocationTargetException) {
+				cause = parent.getCause();
+				if (cause != null) {
+					message += ";" + cause.getMessage();
+				}
+				break;
+			}
+			parent = parent.getCause();
+		}
 		String errorMessage = "Script Error : " + message + "\n\n";
 		errorMessage += line.getText();
 		errorMessage += "\n";
@@ -44,7 +57,6 @@ public class MagicScriptError {
 			boolean useTab = line.getText().charAt(i) == '\t';
 			errorMessage += i >= errorStart && i <= errorEnd ? "^" : useTab ? "\t" : " ";
 		}
-
 		if (cause == null) {
 			throw new MagicScriptException(errorMessage, message, line);
 		} else {

+ 0 - 30
src/main/java/org/ssssssss/script/exception/MagicScriptException.java

@@ -4,7 +4,6 @@ import org.ssssssss.script.parsing.Span;
 
 public class MagicScriptException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
-	private String errorMessage;
 	private String simpleMessage;
 	private Span.Line line;
 
@@ -13,7 +12,6 @@ public class MagicScriptException extends RuntimeException {
 
 	public MagicScriptException(String errorMessage, String simpleMessage, Span.Line line) {
 		super(errorMessage);
-		this.errorMessage = errorMessage;
 		this.simpleMessage = simpleMessage;
 		this.line = line;
 	}
@@ -29,7 +27,6 @@ public class MagicScriptException extends RuntimeException {
 	public MagicScriptException(String message, String simpleMessage, Throwable cause, Span.Line line) {
 		super(message, cause);
 		this.simpleMessage = simpleMessage;
-		this.errorMessage = message;
 		this.line = line;
 	}
 
@@ -40,31 +37,4 @@ public class MagicScriptException extends RuntimeException {
 	public Span.Line getLine() {
 		return line;
 	}
-
-	@Override
-	public String getMessage() {
-		StringBuilder builder = new StringBuilder();
-
-		if (getCause() == null || getCause() == this) {
-			return super.getMessage();
-		}
-
-		builder.append(errorMessage, 0, errorMessage.indexOf('\n'));
-		builder.append("\n");
-
-		Throwable cause = getCause();
-		while (cause != null && cause != this) {
-			if (cause instanceof MagicScriptException) {
-				MagicScriptException ex = (MagicScriptException) cause;
-				if (ex.getCause() == null || ex.getCause() == ex) {
-					builder.append(ex.errorMessage);
-				} else {
-					builder.append(ex.errorMessage, 0, ex.errorMessage.indexOf('\n'));
-				}
-				builder.append("\n");
-			}
-			cause = cause.getCause();
-		}
-		return builder.toString();
-	}
 }