mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 17:47:32 +00:00
1 parent
f01bc0a117
commit
959717fafd
2 files changed
+24
-13
No files matched your search
+23
-12
@@ -306,18 +306,7 @@ public final class ObjectLiteralParser {
|
||||
TypeInfo valueType = null;
|
||||
if (inferTypes && typeResolver != null) {
|
||||
String valueExpr = src.substring(valueStart, valueEnd).trim();
|
||||
if (!valueExpr.isEmpty()) {
|
||||
char vc = valueExpr.charAt(0);
|
||||
if (vc == '{' || vc == '[') {
|
||||
// Nested object/array literals degrade to 'any'
|
||||
valueType = TypeInfo.ANY;
|
||||
} else {
|
||||
TypeInfo inferred = typeResolver.resolve(valueExpr, absBase + valueStart);
|
||||
valueType = (inferred != null) ? inferred : TypeInfo.ANY;
|
||||
}
|
||||
} else {
|
||||
valueType = TypeInfo.ANY;
|
||||
}
|
||||
valueType = inferValueType(valueExpr, absBase + valueStart, typeResolver);
|
||||
}
|
||||
|
||||
int keyStartAbs = absBase + keyStart;
|
||||
@@ -548,6 +537,28 @@ public final class ObjectLiteralParser {
|
||||
return new DynamicFieldResult(receiver, access.propertyName, receiver.getFieldInfo(access.propertyName));
|
||||
}
|
||||
|
||||
private static TypeInfo inferValueType(String valueExpr, int valueStartAbs, ExpressionTypeResolverFn typeResolver) {
|
||||
if (valueExpr == null || valueExpr.isEmpty()) {
|
||||
return TypeInfo.ANY;
|
||||
}
|
||||
|
||||
char first = valueExpr.charAt(0);
|
||||
if (first == '{') {
|
||||
ObjectLiteralAnalysis nested = parse(valueExpr, valueStartAbs, true, false, typeResolver);
|
||||
if (nested != null && nested.supportsInference && nested.inferredType != null) {
|
||||
return nested.inferredType;
|
||||
}
|
||||
return TypeInfo.ANY;
|
||||
}
|
||||
|
||||
if (first == '[') {
|
||||
return TypeInfo.ANY;
|
||||
}
|
||||
|
||||
TypeInfo inferred = typeResolver.resolve(valueExpr, valueStartAbs);
|
||||
return (inferred != null) ? inferred : TypeInfo.ANY;
|
||||
}
|
||||
|
||||
// ──────────────────────────────────────────────────────────────────────────
|
||||
// Scanning / parsing utilities (package-private static, used by analyzer)
|
||||
// ──────────────────────────────────────────────────────────────────────────
|
||||
|
||||
@@ -3249,7 +3249,7 @@ public class ScriptDocument {
|
||||
}
|
||||
}
|
||||
|
||||
i = end;
|
||||
i = brace + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user