diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/EnumConstantInfo.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/EnumConstantInfo.java index 3471d7ed5..776d2900e 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/EnumConstantInfo.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/EnumConstantInfo.java @@ -6,6 +6,8 @@ import noppes.npcs.client.gui.util.script.interpreter.method.MethodInfo; import noppes.npcs.client.gui.util.script.interpreter.type.ScriptTypeInfo; import noppes.npcs.client.gui.util.script.interpreter.type.TypeInfo; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; @@ -133,6 +135,7 @@ public class EnumConstantInfo { ); EnumConstantInfo constantInfo = new EnumConstantInfo(fieldInfo, constructorCall, enumType); + fieldInfo.setEnumConstantInfo(constantInfo); constants.add(constantInfo); lastEnd = m.end(); diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldAccessInfo.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldAccessInfo.java index 3e0ae760d..dc29943e3 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldAccessInfo.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldAccessInfo.java @@ -65,6 +65,10 @@ public class FieldAccessInfo { return isStaticAccess; } + public boolean isEnumConstantAccess() { + return resolvedField != null && resolvedField.isEnumConstant(); + } + public TypeInfo getExpectedType() { return expectedType; } diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldInfo.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldInfo.java index d745b2d96..a8e6a1ce0 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldInfo.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/field/FieldInfo.java @@ -50,17 +50,14 @@ public final class FieldInfo { // Declaration assignment (for initial value validation) private AssignmentInfo declarationAssignment; - - // For enum constants: the arguments passed to the constructor (null if no args or not enum constant) - private final String enumConstantArgs; - - // For enum constants: the containing enum type - private final TypeInfo containingEnumType; + // Enum constant specific info + private EnumConstantInfo enumConstantInfo; + private FieldInfo(String name, Scope scope, TypeInfo declaredType, int declarationOffset, boolean resolved, MethodInfo containingMethod, String documentation, int initStart, int initEnd, int modifiers, - Field reflectionField, String enumConstantArgs, TypeInfo containingEnumType) { + Field reflectionField) { this.name = name; this.scope = scope; this.declaredType = declaredType; @@ -72,17 +69,6 @@ public final class FieldInfo { this.initEnd = initEnd; this.modifiers = modifiers; this.reflectionField = reflectionField; - this.enumConstantArgs = enumConstantArgs; - this.containingEnumType = containingEnumType; - } - - // Private constructor for backward compatibility - private FieldInfo(String name, Scope scope, TypeInfo declaredType, - int declarationOffset, boolean resolved, MethodInfo containingMethod, - String documentation, int initStart, int initEnd, int modifiers, - Field reflectionField) { - this(name, scope, declaredType, declarationOffset, resolved, containingMethod, - documentation, initStart, initEnd, modifiers, reflectionField, null, null); } // Factory methods @@ -162,11 +148,18 @@ public final class FieldInfo { // Enum constants are implicitly public static final int modifiers = Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL; return new FieldInfo(name, Scope.ENUM_CONSTANT, type, declOffset, true, null, null, initStart, initEnd, - modifiers, null, args, containingEnum); + modifiers, null); + } + + // ==================== ENUM HANDLING ==================== + + public void setEnumConstantInfo(EnumConstantInfo enumConstantInfo) { + this.enumConstantInfo = enumConstantInfo; + } + + public EnumConstantInfo getEnumInfo() { + return enumConstantInfo; } - - // ==================== ERROR HANDLING ==================== - /** * Check if this is an enum constant. */ @@ -174,19 +167,6 @@ public final class FieldInfo { return scope == Scope.ENUM_CONSTANT; } - /** - * Get the enum constant args (for enum constants only). - */ - public String getEnumConstantArgs() { - return enumConstantArgs; - } - - /** - * Get the containing enum type (for enum constants only). - */ - public TypeInfo getContainingEnumType() { - return containingEnumType; - } // ==================== ASSIGNMENT MANAGEMENT ====================