From 830f2a3d8faae294ff87a9da95a362f2cf9f873e Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Mon, 5 Jan 2026 23:41:48 +0200 Subject: [PATCH] Stored JSDocInfo in FieldInfo and MethodInfo --- .../gui/util/script/interpreter/ScriptDocument.java | 9 +++++++++ .../gui/util/script/interpreter/field/FieldInfo.java | 6 +++++- .../gui/util/script/interpreter/method/MethodInfo.java | 4 ++++ 3 files changed, 18 insertions(+), 1 deletion(-) 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 35b9e71e3..37839e2c3 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 @@ -738,6 +738,10 @@ public class ScriptDocument { m.start(), nameStart, nameStart, bodyStart, bodyEnd, 0, documentation ); + + if(jsDoc!=null) + methodInfo.setJSDocInfo(jsDoc); + methods.add(methodInfo); } } else { @@ -1032,6 +1036,8 @@ public class ScriptDocument { FieldInfo fieldInfo = FieldInfo.localField(varName, typeInfo, absPos, method, initStart, initEnd, 0); + if(jsDoc != null) + fieldInfo.setJSDocInfo(jsDoc); // Check for duplicate if (locals.containsKey(varName) || globalFields.containsKey(varName)) { AssignmentInfo dupError = AssignmentInfo.duplicateDeclaration( @@ -1349,6 +1355,9 @@ public class ScriptDocument { FieldInfo fieldInfo = FieldInfo.globalField(varName, typeInfo, position, documentation, initStart, initEnd, 0); + if(jsDoc != null) + fieldInfo.setJSDocInfo(jsDoc); + if (globalFields.containsKey(varName)) { AssignmentInfo dupError = AssignmentInfo.duplicateDeclaration( varName, position, position + varName.length(), diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldInfo.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldInfo.java index 5d6b6efdd..9182cc267 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldInfo.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldInfo.java @@ -3,6 +3,7 @@ package noppes.npcs.client.gui.util.script.interpreter.field; import noppes.npcs.client.gui.util.script.interpreter.js_parser.JSFieldInfo; import noppes.npcs.client.gui.util.script.interpreter.js_parser.JSTypeInfo; import noppes.npcs.client.gui.util.script.interpreter.js_parser.JSTypeRegistry; +import noppes.npcs.client.gui.util.script.interpreter.jsdoc.JSDocInfo; import noppes.npcs.client.gui.util.script.interpreter.token.TokenType; import noppes.npcs.client.gui.util.script.interpreter.type.TypeInfo; import noppes.npcs.client.gui.util.script.interpreter.method.MethodCallInfo; @@ -34,7 +35,8 @@ public final class FieldInfo { private final int declarationOffset; // Where this field was declared in the source private final boolean resolved; private final String documentation; // Javadoc/comment documentation for this field - + private JSDocInfo jsDocInfo; // Parsed JSDoc info for this method (may be null) + // Initialization value range (for displaying "= value" in hover info) private final int initStart; // Position of '=' or -1 if no initializer private final int initEnd; // Position after initializer (before ';') or -1 @@ -467,6 +469,8 @@ public final class FieldInfo { public boolean isResolved() { return resolved; } public MethodInfo getContainingMethod() { return containingMethod; } public String getDocumentation() { return documentation; } + public JSDocInfo getJSDocInfo() { return jsDocInfo; } + public void setJSDocInfo(JSDocInfo jsDocInfo) { this.jsDocInfo = jsDocInfo; } public int getInitStart() { return initStart; } public int getInitEnd() { return initEnd; } public boolean hasInitializer() { return initStart >= 0 && initEnd > initStart; } diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/method/MethodInfo.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/method/MethodInfo.java index 354417161..e266ac824 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/method/MethodInfo.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/method/MethodInfo.java @@ -2,6 +2,7 @@ package noppes.npcs.client.gui.util.script.interpreter.method; import noppes.npcs.client.gui.util.script.interpreter.*; import noppes.npcs.client.gui.util.script.interpreter.field.FieldInfo; +import noppes.npcs.client.gui.util.script.interpreter.jsdoc.JSDocInfo; import noppes.npcs.client.gui.util.script.interpreter.js_parser.JSMethodInfo; import noppes.npcs.client.gui.util.script.interpreter.js_parser.JSTypeInfo; import noppes.npcs.client.gui.util.script.interpreter.js_parser.JSTypeRegistry; @@ -59,6 +60,7 @@ public final class MethodInfo { private final boolean isDeclaration; // true if this is a declaration, false if it's a call private final int modifiers; // Java Modifier flags (e.g., Modifier.PUBLIC | Modifier.STATIC) private final String documentation; // Javadoc/comment documentation for this method + private JSDocInfo jsDocInfo; // Parsed JSDoc info for this method (may be null) private final java.lang.reflect.Method javaMethod; // The Java reflection Method, if this was created from reflection // Error tracking for method declarations @@ -269,6 +271,8 @@ public final class MethodInfo { public boolean isPrivate() { return Modifier.isPrivate(modifiers); } public boolean isProtected() { return Modifier.isProtected(modifiers); } public String getDocumentation() { return documentation; } + public JSDocInfo getJSDocInfo() { return jsDocInfo; } + public void setJSDocInfo(JSDocInfo jsDocInfo) { this.jsDocInfo = jsDocInfo; } // ==================== OVERRIDE/IMPLEMENTS GETTERS/SETTERS ====================