From 720cd345e0b9c053b5b33697bda4aa31b762f530 Mon Sep 17 00:00:00 2001 From: Frotty Date: Sun, 28 Dec 2025 15:09:35 +0100 Subject: [PATCH] Print stacktrace for compile errors --- .../wurstio/jassinterpreter/InterpreterException.java | 4 +++- .../intermediatelang/interpreter/ILInterpreter.java | 2 +- .../intermediatelang/interpreter/ILStackFrame.java | 11 +++++------ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/InterpreterException.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/InterpreterException.java index 9b33d15af..e338c9e86 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/InterpreterException.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/jassinterpreter/InterpreterException.java @@ -34,7 +34,9 @@ public InterpreterException(Element trace, String msg, Throwable e) { @Override public String getMessage() { String res = super.getMessage(); - if (trace != null) { + if (stackTrace != null) { + res = res + "\n" + stackTrace; + } else if (trace != null) { WPos pos = trace.attrSource(); res = res + "\n at " + pos.getFile() + ":" + pos.getLine(); } diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ILInterpreter.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ILInterpreter.java index c5d957ea3..312851fa4 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ILInterpreter.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ILInterpreter.java @@ -228,7 +228,7 @@ public static String buildStacktrace(ProgramState globalState, Throwable e) { StringBuilder err = new StringBuilder(); try { WPos src = globalState.getLastStatement().attrTrace().attrSource(); - err.append("at : ").append(new File(src.getFile()).getName()).append(", line ").append(src.getLine()).append("\n"); + err.append("Trace : ").append(new File(src.getFile()).getName()).append(":").append(src.getLine()).append("\n"); } catch (Exception _e) { // ignore } diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ILStackFrame.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ILStackFrame.java index eb00c2b38..769692eb8 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ILStackFrame.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ILStackFrame.java @@ -38,8 +38,12 @@ public ILStackFrame(ImCompiletimeExpr f, WPos trace) { public String getMessage() { StringBuilder sb = new StringBuilder(); + if (trace != null && !trace.isArtificial()) { + String file = new File(trace.getFile()).getName(); + sb.append(" ╚ ").append(file).append(":").append(trace.getLine()); + } if (f.isLeft()) { - sb.append("... when calling ").append(f.getLeft().getName()).append("("); + sb.append(" calling ").append(f.getLeft().getName()).append("("); boolean first = true; for (ILconst arg : args) { if (!first) { @@ -53,11 +57,6 @@ public String getMessage() { sb.append("... when executing compiletime expression "); } - if (trace != null && !trace.isArtificial()) { - String file = new File(trace.getFile()).getName(); - sb.append(" in ").append(file).append(":").append(trace.getLine()); - } - return sb.toString(); }