mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 21:17:32 +00:00
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:
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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user