From 1be2aff17eb91df281a512809dddc9539ab4e3f3 Mon Sep 17 00:00:00 2001 From: Frotty Date: Thu, 11 Dec 2025 10:42:44 +0100 Subject: [PATCH 1/2] Unify line positions --- .../de/peeeq/wurstio/jassinterpreter/InterpreterException.java | 2 +- .../main/java/de/peeeq/wurstscript/attributes/CompileError.java | 2 +- .../src/main/java/de/peeeq/wurstscript/parser/WPos.java | 2 +- .../main/java/de/peeeq/wurstscript/types/VariableBinding.java | 2 +- 4 files changed, 4 insertions(+), 4 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 be1b925ce..9b33d15af 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 @@ -36,7 +36,7 @@ public String getMessage() { String res = super.getMessage(); if (trace != null) { WPos pos = trace.attrSource(); - res = res + "\n at " + pos.getFile() + " line " + pos.getLine(); + res = res + "\n at " + pos.getFile() + ":" + pos.getLine(); } return res; } diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/attributes/CompileError.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/attributes/CompileError.java index 44a067a6b..15236afb0 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/attributes/CompileError.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/attributes/CompileError.java @@ -68,7 +68,7 @@ public String getMessage() { @Override public String toString() { File file = new File(source.getFile()); - return errorType + " in File " + file.getName() + " line " + source.getLine() + ":\n " + + return errorType + " in File " + file.getName() + ":" + source.getLine() + ":\n " + message; } diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/parser/WPos.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/parser/WPos.java index 1eb619348..0319f72dd 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/parser/WPos.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/parser/WPos.java @@ -75,7 +75,7 @@ public String toString() { } public String print() { - return "[" + file + " line " + getLine() + "]"; + return "[" + file + ":" + getLine() + "]"; } private static final Pattern p = Pattern.compile("^.*[/\\\\]([^/\\\\]+)\\.[^.]*$"); diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/types/VariableBinding.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/types/VariableBinding.java index 1a94a55d3..0e44704e2 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/types/VariableBinding.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/types/VariableBinding.java @@ -84,7 +84,7 @@ public String toString() { if (!first) { s.append(", "); } - s.append(t.getName()).append(" line ").append(t.getSource().getLine()); + s.append(t.getName()).append(":").append(t.getSource().getLine()); first = false; } s.append(">"); From 7bf8052c8b96967481b03b5c133a7efbd081feca Mon Sep 17 00:00:00 2001 From: Frotty Date: Thu, 11 Dec 2025 11:12:59 +0100 Subject: [PATCH 2/2] small fix --- .../intermediatelang/interpreter/EvaluateExpr.java | 6 ++++-- .../intermediatelang/interpreter/ProgramState.java | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/EvaluateExpr.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/EvaluateExpr.java index 85ce3f9eb..8c1c0f33d 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/EvaluateExpr.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/EvaluateExpr.java @@ -8,7 +8,9 @@ import de.peeeq.wurstscript.ast.WPackage; import de.peeeq.wurstscript.intermediatelang.*; import de.peeeq.wurstscript.jassIm.*; +import de.peeeq.wurstscript.translation.imtranslation.ImPrinter; import de.peeeq.wurstscript.types.TypesHelper; +import de.peeeq.wurstscript.utils.Utils; import org.eclipse.jdt.annotation.Nullable; import java.util.ArrayList; @@ -256,7 +258,7 @@ public static ILconst eval(ImVarArrayAccess e, ProgramState globalState, LocalSt public static ILconst eval(ImMemberAccess ma, ProgramState globalState, LocalState localState) { ILconstObject receiver = globalState.toObject(ma.getReceiver().evaluate(globalState, localState)); if (receiver == null) { - throw new InterpreterException(ma.getTrace(), "Null pointer dereference"); + throw new InterpreterException(ma.getTrace(), "Null pointer dereference: " + ImPrinter.asString(ma.getReceiver())); } List indexes = new ArrayList<>(); for (ImExpr i : ma.getIndexes()) { @@ -411,7 +413,7 @@ public static ILaddress evaluateLvalue(ImMemberAccess va, ProgramState globalSta } } if (receiver == null) { - throw new InterpreterException(va.attrTrace(), "Null pointer dereference"); + throw new InterpreterException(va.attrTrace(), "Null pointer dereference: " + ImPrinter.asString(va.getReceiver())); } ILconstObject receiverFinal = receiver; List indexes = diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ProgramState.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ProgramState.java index aa4cd1c68..19a4dfcd7 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ProgramState.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/intermediatelang/interpreter/ProgramState.java @@ -10,6 +10,7 @@ import de.peeeq.wurstscript.intermediatelang.*; import de.peeeq.wurstscript.jassIm.*; import de.peeeq.wurstscript.parser.WPos; +import de.peeeq.wurstscript.translation.imtranslation.ImPrinter; import de.peeeq.wurstscript.utils.LineOffsets; import de.peeeq.wurstscript.utils.Utils; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -106,7 +107,7 @@ public void deallocate(ILconstObject obj, ImClass clazz, Element trace) { public void assertAllocated(ILconstObject obj, Element trace) { if (obj == null) { - throw new InterpreterException(trace, "Null pointer dereference"); + throw new InterpreterException(trace, "Null pointer dereference. The interpreter expected an object here, but found null."); } if (obj.isDestroyed()) { throw new InterpreterException(trace, "Object already destroyed");