Class NoType

  • All Implemented Interfaces:
    StaticScope<JSType>, java.io.Serializable

    public class NoType
    extends NoObjectType
    Bottom type, representing the subclass of any value or object. Although JavaScript programmers can't explicitly denote the bottom type, it comes up in static analysis. For example, if we have: var x = null; if (x) { f(x); } We need to be able to assign x a type within the f(x) call. Since it has no possible type, we assign x the NoType, so that f(x) is legal no matter what the type of f's first argument is.
    See Also:
    Bottom types, Serialized Form
    • Method Detail

      • isNoType

        public boolean isNoType()
        Overrides:
        isNoType in class JSType
      • isNullable

        public boolean isNullable()
        Description copied from class: JSType
        Tests whether this type is nullable.
        Overrides:
        isNullable in class JSType
      • 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 NoObjectType
        Returns:
        this &lt;: that
      • getPossibleToBooleanOutcomes

        public BooleanLiteralSet getPossibleToBooleanOutcomes()
        Description copied from class: JSType
        Computes the set of possible outcomes of the ToBoolean predicate for this type. The ToBoolean predicate is defined by the ECMA-262 standard, 3rd edition. Its behavior for simple types can be summarized by the following table:
        typeresult
        undefined{false}
        null{false}
        boolean{true, false}
        number{true, false}
        string{true, false}
        Object{true}
        Overrides:
        getPossibleToBooleanOutcomes in class ObjectType
        Returns:
        the set of boolean literals for this type
      • 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 NoObjectType
      • 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 NoObjectType
      • 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 NoObjectType
      • visit

        public <T> T visit​(Visitor<T> visitor)
        Description copied from class: JSType
        Visit this type with the given visitor.
        Overrides:
        visit in class NoObjectType
        Returns:
        the value returned by the visitor
        See Also:
        Visitor
      • 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
      • getCtorImplementedInterfaces

        public java.lang.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 java.lang.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)