From 931858c554a61558007e47fb5307a9414f131f50 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Sat, 3 Jan 2026 01:46:14 +0200 Subject: [PATCH] Returned unresolved TypeInfo for types not found --- .../script/interpreter/ScriptDocument.java | 9 +++++++-- .../script/interpreter/method/MethodInfo.java | 4 ++++ .../script/interpreter/token/TokenType.java | 18 +++++++++++------- .../script/interpreter/type/TypeResolver.java | 4 ++-- 4 files changed, 24 insertions(+), 11 deletions(-) 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 018df2d28..f719aa4a7 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 @@ -1396,7 +1396,7 @@ public class ScriptDocument { */ private TypeInfo resolveTypeAndTrackUsage(String typeName) { if (typeName == null || typeName.isEmpty()) - return null; + return TypeInfo.unresolved(typeName, typeName); // Strip generics for resolution int genericStart = typeName.indexOf('<'); @@ -2019,7 +2019,12 @@ public class ScriptDocument { } // Return type - marks.add(new ScriptLine.Mark(m.start(1), m.end(1), TokenType.TYPE_DECL)); + TokenType returnToken = TokenType.UNDEFINED_VAR; + if (methodInfo != null) + returnToken = methodInfo.getReturnType().getTokenType(); + + marks.add(new ScriptLine.Mark(m.start(1), m.end(1), returnToken, + methodInfo != null ? methodInfo.getReturnType() : null)); // Method name with MethodInfo metadata marks.add(new ScriptLine.Mark(m.start(2), m.end(2), TokenType.METHOD_DECL, methodInfo)); } 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 21a4cdc71..f39875b26 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 @@ -451,6 +451,10 @@ public final class MethodInfo { public void validate(String methodBodyText, boolean hasBody, TypeResolver typeResolver) { if (!isDeclaration) return; + // Don't error if return type unresolved + if(returnType != null && !returnType.isResolved()) + return; + // Validate parameters validateParameters(); boolean interfaceMember = containingType != null && containingType.isInterface(); diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java index c67174491..52f7b245e 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java @@ -77,23 +77,27 @@ public enum TokenType { return italic; } - public static int getColor(TypeInfo typeInfo) { - if (typeInfo == null) - return TokenType.IMPORTED_CLASS.getHexColor(); + public static TokenType getByType(TypeInfo typeInfo) { + if (typeInfo == null || !typeInfo.isResolved()) + return TokenType.UNDEFINED_VAR; switch (typeInfo.getKind()) { case INTERFACE: - return TokenType.INTERFACE_DECL.getHexColor(); + return TokenType.INTERFACE_DECL; case ENUM: - return TokenType.ENUM_DECL.getHexColor(); + return TokenType.ENUM_DECL; case CLASS: - return TokenType.CLASS_DECL.getHexColor(); + return TokenType.CLASS_DECL; default: break; } // Use the TypeInfo's own token type, which handles ScriptTypeInfo correctly - return typeInfo.getTokenType().getHexColor(); + return typeInfo.getTokenType(); + } + + public static int getColor(TypeInfo typeInfo) { + return getByType(typeInfo).getHexColor(); } /** diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeResolver.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeResolver.java index a494c54b2..b686594a1 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeResolver.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeResolver.java @@ -125,7 +125,7 @@ public class TypeResolver { Map imports, Set wildcardPackages) { if (simpleName == null || simpleName.isEmpty()) { - return null; + return TypeInfo.unresolved(simpleName,simpleName); } // 1. Check explicit imports @@ -166,7 +166,7 @@ public class TypeResolver { } } - return null; + return TypeInfo.unresolved(simpleName,simpleName); } /**