Class EnumType

  • All Implemented Interfaces:
    java.io.Serializable

    public class EnumType
    extends PrototypeObjectType
    An enum type representing a branded collection of elements. Each element is referenced by its name, and has an EnumElementType type.
    See Also:
    Serialized Form
    • Method Detail

      • toMaybeEnumType

        public EnumType toMaybeEnumType()
        Description copied from class: JSType
        Downcasts this to an EnumType, or returns null if this is not an EnumType.
        Overrides:
        toMaybeEnumType in class JSType
      • getElements

        public java.util.Set<java.lang.String> getElements()
        Gets the elements defined on this enum.
        Returns:
        the elements' names defined on this enum. The returned set is immutable.
      • defineElement

        public boolean defineElement​(java.lang.String name,
                                     Node definingNode)
        Defines a new element on this enum.
        Parameters:
        name - the name of the new element
        definingNode - the Node that defines this new element
        Returns:
        true iff the new element is added successfully
      • getElementsType

        public EnumElementType getElementsType()
        Gets the elements' type, which is a subtype of the enumerated type.
      • testForEquality

        public TernaryValue testForEquality​(JSType that)
        Description copied from class: JSType
        Compares this and that.
        Overrides:
        testForEquality in class ObjectType
        Returns:
        • TernaryValue.TRUE if the comparison of values of this type and that always succeed (such as undefined compared to null)
        • TernaryValue.FALSE if the comparison of values of this type and that always fails (such as undefined compared to number)
        • TernaryValue.UNKNOWN if the comparison can succeed or fail depending on the concrete values
      • getDisplayName

        public java.lang.String getDisplayName()
        Description copied from class: JSType
        Returns a user meaningful label for the JSType instance. For example, Functions and Enums will return their declaration name (if they have one). Some types will not have a meaningful display name. Calls to hasDisplayName() will return true IFF getDisplayName() will return null or a zero length string.
        Overrides:
        getDisplayName in class ObjectType
        Returns:
        the display name of the type, or null if one is not available
      • visit

        public <T> T visit​(Visitor<T> visitor)
        Description copied from class: JSType
        Visit this type with the given visitor.
        Overrides:
        visit in class ObjectType
        Returns:
        the value returned by the visitor
        See Also:
        Visitor
      • getConstructor

        public FunctionType getConstructor()
        Description copied from class: ObjectType
        Gets this object's constructor.
        Overrides:
        getConstructor in class PrototypeObjectType
        Returns:
        this object's constructor or null if it is a native object (constructed natively v.s. by instantiation of a function)
      • matchesNumberContext

        public boolean matchesNumberContext()
        Description copied from class: JSType
        This predicate is used to test whether a given type can appear in a numeric context, such as an operand of a multiply operator.
        Overrides:
        matchesNumberContext in class PrototypeObjectType
      • matchesStringContext

        public boolean matchesStringContext()
        Description copied from class: JSType
        This predicate is used to test whether a given type can appear in a String context, such as an operand of a string concat (+) operator. All types have at least the potential for converting to String. When we add externally defined types, such as a browser OM, we may choose to add types that do not automatically convert to String.
        Overrides:
        matchesStringContext in class PrototypeObjectType
      • matchesObjectContext

        public boolean matchesObjectContext()
        Description copied from class: JSType
        This predicate is used to test whether a given type can appear in an Object context, such as the expression in a with statement. Most types we will encounter, except notably null, have at least the potential for converting to Object. Host defined objects can get peculiar.
        Overrides:
        matchesObjectContext in class PrototypeObjectType
      • getSource

        public final Node getSource()