Package com.google.javascript.rhino.jstype

# Class NoObjectType

java.lang.Object
com.google.javascript.rhino.jstype.JSType
com.google.javascript.rhino.jstype.ObjectType
com.google.javascript.rhino.jstype.FunctionType
com.google.javascript.rhino.jstype.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:
  - Bottom types
  - Serialized Form

## Nested Class Summary

## Nested classes/interfaces inherited from class com.google.javascript.rhino.jstype.JSType

`JSType.TypePair`

## Field Summary

### Fields inherited from class com.google.javascript.rhino.jstype.JSType

`EMPTY_TYPE_COMPONENT, ENUMDECL, NOT_A_CLASS, NOT_A_TYPE, NOT_ENUMDECL, templateTypeMap, UNKNOWN_NAME`

## Method Summary

Modifier and Type
Method
Description
`FunctionType`
`getConstructor()`
Gets this object's constructor.
`Iterable<ObjectType>`
`getCtorExtendedInterfaces()`
Gets the interfaces extended by the interface associated with this type.
`Iterable<ObjectType>`
`getCtorImplementedInterfaces()`
Gets the interfaces implemented by the ctor associated with this type.
`ObjectType`
`getImplicitPrototype()`
Gets the implicit prototype (a.k.a.
`FunctionType`
`getOwnerFunction()`
Gets the owner of this if it's a function prototype.
`String`
`getReferenceName()`
Gets the reference name for this object.
`int`
`hashCode()`
`boolean`
`hasReferenceName()`
Returns true if the object is named.
`boolean`
`isNativeObjectType()`
Whether this is a built-in object.
`boolean`
`isNoObjectType()`
`boolean`
`isSubtype(JSType that)`
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.
`void`
`matchConstraint(JSType constraint)`
Modify this type so that it matches the specified type.
`boolean`
`matchesNumberContext()`
This predicate is used to test whether a given type can appear in a numeric context, such as an operand of a multiply operator.
`boolean`
`matchesObjectContext()`
This predicate is used to test whether a given type can appear in an `Object` context, such as the expression in a with statement.
`boolean`
`matchesStringContext()`
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.
`void`
`matchRecordTypeConstraint(ObjectType constraintObj)`
`boolean`
`removeProperty(String name)`
Removes the declared or inferred property from this ObjectType.
`void`
`setPropertyJSDocInfo(String propertyName, JSDocInfo info)`
Sets the docInfo for the specified property from the `JSDocInfo` on its definition.
`FunctionType`
`toMaybeFunctionType()`
Downcasts this to a FunctionType, or returns null if this is not a function.
`JSType`
`unboxesTo()`
Turn an object type to its corresponding scalar type.
`<T> T`
`visit(Visitor<T> visitor)`
Visit this type with the given visitor.

### Methods inherited from class com.google.javascript.rhino.jstype.FunctionType

`canBeCalled, clearCachedValues, cloneWithoutArrowType, getAllExtendedInterfaces, getAllImplementedInterfaces, getBindReturnType, getExtendedInterfaces, getExtendedInterfacesCount, getImplementedInterfaces, getInstanceType, getMaxArguments, getMinArguments, getOwnImplementedInterfaces, getOwnPropertyNames, getParameters, getParametersNode, getPropertyType, getPrototype, getReturnType, getSlot, getSource, getSubTypes, getSuperClassConstructor, getTopDefiningInterface, getTopMostDefiningType, getTypeOfThis, hasAnyTemplateTypesInternal, hasCachedValues, hasEqualCallType, hasImplementedInterfaces, hasInstanceType, isConstructor, isInstanceType, isInterface, isOrdinaryFunction, isReturnTypeInferred, makesDicts, makesStructs, setDict, setExtendedInterfaces, setImplementedInterfaces, setPrototypeBasedOn, setSource, setStruct, toDebugHashCodeString`

### Methods inherited from class com.google.javascript.rhino.jstype.ObjectType

`cast, createDelegateSuffix, defineDeclaredProperty, defineInferredProperty, defineSynthesizedProperty, findPropertyType, getDisplayName, getJSDocInfo, getNormalizedReferenceName, getOwnPropertyJSDocInfo, getOwnSlot, getParentScope, getPossibleToBooleanOutcomes, getPropertiesCount, getPropertyNames, getPropertyNode, getRootNode, getTemplateTypes, hasOwnProperty, hasProperty, isFunctionPrototypeType, isObject, isPropertyInExterns, isPropertyTypeDeclared, isPropertyTypeInferred, isUnknownType, setJSDocInfo, testForEquality`

### Methods inherited from class com.google.javascript.rhino.jstype.JSType

`autobox, autoboxesTo, canCastTo, canTestForEqualityWith, canTestForShallowEqualityWith, clearResolved, collapseUnion, dereference, differsFrom, equals, forceResolve, getGreatestSubtype, getLeastSupertype, getRestrictedTypeGivenToBooleanOutcome, getTemplateTypeMap, getTypesUnderEquality, getTypesUnderInequality, getTypesUnderShallowEquality, getTypesUnderShallowInequality, hasAnyTemplateTypes, hasDisplayName, isAllType, isArrayType, isBooleanObjectType, isBooleanValueType, isCheckedUnknownType, isDateType, isDict, isEmptyType, isEnumElementType, isEnumType, isEquivalent, isEquivalentTo, isFunctionType, isGlobalThisType, isInvariant, isNominalConstructor, isNominalType, isNoResolvedType, isNoType, isNullable, isNullType, isNumber, isNumberObjectType, isNumberValueType, isRecordType, isRegexpType, isResolved, isString, isStringObjectType, isStringValueType, isStruct, isTemplateType, isTemplatizedType, isUnionType, isVoidType, matchesInt32Context, matchesUint32Context, resolve, restrictByNotNullOrUndefined, setValidator, toAnnotationString, toMaybeEnumElementType, toMaybeEnumType, toMaybeFunctionType, toMaybeTemplateType, toMaybeTemplateType, toMaybeTemplatizedType, toMaybeTemplatizedType, toMaybeUnionType, toObjectType, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## 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 invalid input: '<'= x invalid input: '<'= 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.

Parameters:
  `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:
  - `Visitor`

### 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`
Parameters:
  `constraint` -

### matchRecordTypeConstraint

public void matchRecordTypeConstraint(ObjectType constraintObj)