From 40d35d2f20cdc4b960df1e6a684c99cca5815513 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Sat, 27 Dec 2025 18:46:53 +0200 Subject: [PATCH] Captured Assignment's statement start and made FULL LINE errors --- .../gui/util/script/interpreter/AssignmentInfo.java | 12 +++++++++++- .../gui/util/script/interpreter/ScriptDocument.java | 2 ++ .../gui/util/script/interpreter/ScriptLine.java | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/AssignmentInfo.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/AssignmentInfo.java index e748834c2..753adb86e 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/AssignmentInfo.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/AssignmentInfo.java @@ -28,6 +28,9 @@ public class AssignmentInfo { STATIC_CONTEXT_ERROR // Accessing instance field from static context } + // Statement position + private final int statementStart; // Absolute start of statement (includes modifiers/type for declarations) + // Target/LHS info private final String targetName; private final int lhsStart; // Position of first char of target variable/field @@ -53,12 +56,13 @@ public class AssignmentInfo { private String requiredType; private String providedType; - public AssignmentInfo(String targetName, int lhsStart, int lhsEnd, + public AssignmentInfo(String targetName, int statementStart, int lhsStart, int lhsEnd, TypeInfo targetType, int rhsStart, int rhsEnd, TypeInfo sourceType, String sourceExpr, TypeInfo receiverType, java.lang.reflect.Field reflectionField, boolean isFinal) { this.targetName = targetName; + this.statementStart = statementStart; this.lhsStart = lhsStart; this.lhsEnd = lhsEnd; this.targetType = targetType; @@ -269,12 +273,17 @@ public class AssignmentInfo { * These errors should underline the RHS. */ public boolean isRhsError() { + return false; + } + + public boolean isFullLineError() { return errorType == ErrorType.TYPE_MISMATCH; } // ==================== GETTERS ==================== public String getTargetName() { return targetName; } + public int getStatementStart() { return statementStart; } public int getLhsStart() { return lhsStart; } public int getLhsEnd() { return lhsEnd; } public TypeInfo getTargetType() { return targetType; } @@ -299,6 +308,7 @@ public class AssignmentInfo { public String toString() { return "AssignmentInfo{" + "target='" + targetName + "', " + + "stmt=" + statementStart + ", " + "lhs=[" + lhsStart + "-" + lhsEnd + "], " + "rhs=[" + rhsStart + "-" + rhsEnd + "], " + "targetType=" + targetType + ", " + diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptDocument.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptDocument.java index f653ad770..41fdcf872 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptDocument.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptDocument.java @@ -2970,6 +2970,7 @@ public class ScriptDocument { // Create the assignment info using the new constructor AssignmentInfo info = new AssignmentInfo( targetName, + stmtStart, lhsStart, lhsEnd, targetType, @@ -3055,6 +3056,7 @@ public class ScriptDocument { // Create the assignment info AssignmentInfo info = new AssignmentInfo( varName, + stmtStart, varNameStart, varNameEnd, targetType, diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptLine.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptLine.java index 09a6159fe..344790af5 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptLine.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptLine.java @@ -401,6 +401,9 @@ public class ScriptLine { underlineStart = assign.getRhsStart(); underlineEnd = assign.getRhsEnd(); underlineText = assign.getSourceExpr(); + } else if (assign.isFullLineError()) { + underlineStart = assign.getStatementStart(); + underlineEnd = assign.getRhsEnd(); } else { // Skip assignments with no displayable error continue;