Class EnumType

All Implemented Interfaces:
JSType.WithSourceRef

public final class EnumType extends PrototypeObjectType implements JSType.WithSourceRef
An enum type representing a branded collection of elements. Each element is referenced by its name, and has an EnumElementType type.
  • Method Details

    • builder

      public static EnumType.Builder builder(JSTypeRegistry registry)
    • 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
    • getImplicitPrototype

      public ObjectType getImplicitPrototype()
      Description copied from class: ObjectType
      Gets the implicit prototype (a.k.a. the [[Prototype]] property).
      Overrides:
      getImplicitPrototype in class PrototypeObjectType
    • getElements

      public Set<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(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.
    • getEnumeratedTypeOfEnumObject

      public JSType getEnumeratedTypeOfEnumObject()
      Gets the enumerated type.
      Overrides:
      getEnumeratedTypeOfEnumObject in class ObjectType
    • testForEquality

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

      public 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:
    • getConstructor

      public @Nullable 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()
      Description copied from interface: JSType.WithSourceRef
      The node representing the declaration of this type.
      Specified by:
      getSource in interface JSType.WithSourceRef
    • getGoogModuleId

      public @Nullable String getGoogModuleId()
      Description copied from interface: JSType.WithSourceRef
      The ID of the goog.module in which this type was declared.
      Specified by:
      getGoogModuleId in interface JSType.WithSourceRef