diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/hover/TokenHoverInfo.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/hover/TokenHoverInfo.java index 9f9fae12d..2e01e47f8 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/hover/TokenHoverInfo.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/hover/TokenHoverInfo.java @@ -184,7 +184,7 @@ public class TokenHoverInfo { } // Show method-level errors if this is the method name itself - MethodCallInfo callInfo = token.getMethodCallInfo(); + MethodCallInfo callInfo = token.isEnumConstant()? containingCall : token.getMethodCallInfo(); if (callInfo != null) { if (callInfo.hasArgCountError()) { errors.add(callInfo.getErrorMessage()); @@ -337,12 +337,18 @@ public class TokenHoverInfo { ScriptDocument doc = line.getParent(); int tokenStart = token.getGlobalStart(); - + for (MethodCallInfo call : doc.getMethodCalls()) { + boolean isWithinName = tokenStart >= call.getMethodNameStart() && tokenStart <= call.getMethodNameEnd(); + + // If this is an enum constant, return methodCall on name itself + if (token.isEnumConstant() && isWithinName) + return call; + // Check if token is within the argument list if (tokenStart >= call.getOpenParenOffset() && tokenStart <= call.getCloseParenOffset()) { // Make sure it's not the method name itself - if (tokenStart >= call.getMethodNameStart() && tokenStart <= call.getMethodNameEnd()) { + if (isWithinName) { continue; } return call; diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/Token.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/Token.java index 194878c76..b7b81af9e 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/Token.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/Token.java @@ -206,6 +206,9 @@ public class Token { type == TokenType.ENUM_DECL; } + public boolean isEnumConstant() { + return type == TokenType.ENUM_CONSTANT; + } public boolean isResolved() { if (typeInfo != null) return typeInfo.isResolved(); if (fieldInfo != null) return fieldInfo.isResolved();