Class NoObjectType

All Implemented Interfaces:
StaticScope<JSType>, Serializable
Direct Known Subclasses:
NoType

public class NoObjectType extends FunctionType
The bottom Object type, representing the subclass of all objects. Although JavaScript programmers can't explicitly denote the bottom Object type, it comes up in static analysis. For example, if we have: var x = function() {}; if (x instanceof Array) { f(x); } We need to be able to assign x a type within the f(x) call. It has no possible type, but x would not be legal if f expected a string. So we assign it the NoObjectType.
See Also:
  • Method Details

    • isSubtype

      public boolean isSubtype(JSType that)
      Description copied from class: FunctionType
      A function is a subtype of another if their call methods are related via subtyping and this is a subtype of that with regard to the prototype chain.
      Overrides:
      isSubtype in class FunctionType
      Returns:
      this &lt;: that
    • toMaybeFunctionType

      public FunctionType toMaybeFunctionType()
      Description copied from class: JSType
      Downcasts this to a FunctionType, or returns null if this is not a function. For the purposes of this function, we define a MaybeFunctionType as any type in the sub-lattice { x | LEAST_FUNCTION_TYPE <= x <= GREATEST_FUNCTION_TYPE } This definition excludes bottom types like NoType and NoObjectType. This definition is somewhat arbitrary and axiomatic, but this is the definition that makes the most sense for the most callers.
      Overrides:
      toMaybeFunctionType in class FunctionType
    • isNoObjectType

      public boolean isNoObjectType()
      Overrides:
      isNoObjectType in class JSType
    • getImplicitPrototype

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

      public String getReferenceName()
      Description copied from class: ObjectType
      Gets the reference name for this object. This includes named types like constructors, prototypes, and enums. It notably does not include literal types like strings and booleans and structural types.
      Returns:
      the object's name or null if this is an anonymous object
    • 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.
    • 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.
    • 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.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class FunctionType
    • removeProperty

      public boolean removeProperty(String name)
      Description copied from class: ObjectType
      Removes the declared or inferred property from this ObjectType.
      Parameters:
      name - the property's name
      Returns:
      true if the property was removed successfully. False if the property did not exist, or could not be removed.
    • setPropertyJSDocInfo

      public void setPropertyJSDocInfo(String propertyName, JSDocInfo info)
      Description copied from class: ObjectType
      Sets the docInfo for the specified property from the JSDocInfo on its definition.
      info - JSDocInfo for the property definition. May be null.
    • visit

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

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

      public JSType unboxesTo()
      Description copied from class: JSType
      Turn an object type to its corresponding scalar type.
      Overrides:
      unboxesTo in class JSType
      Returns:
      the unboxed type or null if this type does not unbox.
    • hasReferenceName

      public boolean hasReferenceName()
      Description copied from class: ObjectType
      Returns true if the object is named.
      Overrides:
      hasReferenceName in class ObjectType
      Returns:
      true if the object is named, false if it is anonymous
    • isNativeObjectType

      public boolean isNativeObjectType()
      Whether this is a built-in object.
      Overrides:
      isNativeObjectType in class ObjectType
    • getOwnerFunction

      public FunctionType getOwnerFunction()
      Description copied from class: ObjectType
      Gets the owner of this if it's a function prototype.
      Overrides:
      getOwnerFunction in class ObjectType
    • getCtorImplementedInterfaces

      public Iterable<ObjectType> getCtorImplementedInterfaces()
      Description copied from class: ObjectType
      Gets the interfaces implemented by the ctor associated with this type. Intended to be overridden by subclasses.
      Overrides:
      getCtorImplementedInterfaces in class ObjectType
    • getCtorExtendedInterfaces

      public Iterable<ObjectType> getCtorExtendedInterfaces()
      Description copied from class: ObjectType
      Gets the interfaces extended by the interface associated with this type. Intended to be overridden by subclasses.
      Overrides:
      getCtorExtendedInterfaces in class ObjectType
    • matchConstraint

      public void matchConstraint(JSType constraint)
      Description copied from class: JSType
      Modify this type so that it matches the specified type. This is useful for reverse type-inference, where we want to infer that an object literal matches its constraint (much like how the java compiler does reverse-inference to figure out generics).
      Overrides:
      matchConstraint in class JSType
    • matchRecordTypeConstraint

      public void matchRecordTypeConstraint(ObjectType constraintObj)