Merge remote-tracking branch 'origin/syntax-highlighter-unified' into syntax-highlighter-unified

# Conflicts:
#	src/main/java/noppes/npcs/client/gui/util/script/interpreter/type/TypeInfo.java
This commit is contained in:
bigguy345 committed 2026-03-13 18:30:09 +02:00
commit 390b3446a3
1 file changed
+32 -1
@@ -4308,6 +4308,37 @@ public class ScriptDocument {
return resolveTypeAndTrackUsage(typeName);
}
private TypeInfo substituteTypeParams(TypeInfo type, int position) {
if (type == null)
return null;
if (!type.isResolved() && type.getSimpleName() != null
&& !type.getSimpleName().contains(".")) {
TypeInfo sub = resolveType(type.getSimpleName(), position);
return (sub != null && sub.isResolved()) ? sub : type;
}
if (type.isParameterized()) {
List<TypeInfo> args = type.getAppliedTypeArgs();
if (args != null && !args.isEmpty()) {
List<TypeInfo> substituted = new ArrayList<>(args.size());
boolean anyChanged = false;
for (TypeInfo arg : args) {
TypeInfo sub = substituteTypeParams(arg, position);
if (sub != arg)
anyChanged = true;
substituted.add(sub);
}
if (anyChanged) {
TypeInfo raw = type.getRawType();
return raw != null ? raw.parameterize(substituted) : type.parameterize(substituted);
}
}
}
return type;
}
/**
* Recursively resolve any unresolved type names inside a TypeInfo using position-aware resolution.
*
@@ -10015,7 +10046,7 @@ for (ScriptTypeInfo type:scriptTypes.values()) {
TokenType type = isClassTypeInfo ? varInfo.isGlobal() ? TokenType.GLOBAL_FIELD
: TokenType.LOCAL_FIELD : info.getTokenType();
: TokenType.LOCAL_FIELD : TokenType.METHOD_CALL;
marks.add(new ScriptLine.Mark(start, end, type, isClassTypeInfo ? varInfo : ctorCall));
continue;
}