Returned unresolved TypeInfo for types not found

This commit is contained in:
bigguy345 committed 2026-01-03 01:46:14 +02:00
1 parent bc6e9786da
commit 931858c554
4 files changed
+24 -11

No files matched your search

@@ -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));
}
@@ -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();
@@ -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();
}
/**
@@ -125,7 +125,7 @@ public class TypeResolver {
Map<String, ImportData> imports,
Set<String> 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);
}
/**