Class TemplateType
java.lang.Object
com.google.javascript.rhino.jstype.JSType
com.google.javascript.rhino.jstype.ObjectType
com.google.javascript.rhino.jstype.TemplateType
- All Implemented Interfaces:
StaticScope<JSType>
,Serializable
- See Also:
-
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 TypeMethodDescriptionboolean
This predicate is used to test whether a given type can be used as the 'function' in a function call.Gets the least supertype of this that's not a union.findPropertyType
(String propertyName) Coerces this type to an Object type, then gets the type of the property whose name is given.Gets this object's constructor.Gets the interfaces implemented by the ctor associated with this type.Gets the implicit prototype (a.k.a.Gets the docInfo for this type.Gets the owner of this if it's a function prototype.Gets the reference name for this object.Returns the template type map associated with this type.com.google.common.collect.ImmutableList<JSType>
Gets the declared default element type.Returns the expected type ofthis
in the current scope.boolean
int
hashCode()
boolean
Returns true if the object is named.boolean
boolean
boolean
Whether this type is aFunctionType
that is a constructor or a named type that points to such a type.boolean
isDict()
Returns true iffthis
can be adict
.boolean
Whether this type is an Instance object of some constructor.boolean
Whether this type is aFunctionType
that is an interface or a named type that points to such a type.boolean
Whether this is a built-in object.boolean
Whether this type is a nominal type (a named instance object or a named enum).boolean
boolean
boolean
isNoType()
boolean
Tests whether this type is nullable.boolean
Whether this type is aFunctionType
that is an ordinary function or a named type that points to such a type.boolean
isStruct()
Returns true iffthis
can be astruct
.boolean
Checks whetherthis
is a subtype ofthat
.boolean
We treat this as the unknown type if any of its implicit prototype properties is unknown.void
matchConstraint
(JSType constraint) Modify this type so that it matches the specified type.boolean
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
This predicate is used to test whether a given type can appear in anObject
context, such as the expression in a with statement.boolean
This predicate is used to test whether a given type can appear in aString
context, such as an operand of a string concat (+) operator.boolean
removeProperty
(String name) Removes the declared or inferred property from this ObjectType.void
setJSDocInfo
(JSDocInfo info) Sets the docInfo for this type from the givenJSDocInfo
.void
setPropertyJSDocInfo
(String propertyName, JSDocInfo info) Sets the docInfo for the specified property from theJSDocInfo
on its definition.testForEquality
(JSType that) Comparesthis
andthat
.A hash code function for diagnosing complicated issues around type-identity.Downcasts this to an EnumElementType, or returns null if this is not an EnumElementType.Downcasts this to an EnumType, or returns null if this is not an EnumType.Downcasts this to a FunctionType, or returns null if this is not a function.Downcasts this to a TemplateType, or returns null if this is not a function.Downcasts this to a TemplatizedType, or returns null if this is not a function.Downcasts this to a UnionType, or returns null if this is not a UnionType.<T> T
Visit this type with the given visitor.Methods inherited from class com.google.javascript.rhino.jstype.ObjectType
cast, clearCachedValues, createDelegateSuffix, defineDeclaredProperty, defineInferredProperty, defineSynthesizedProperty, getCtorExtendedInterfaces, getDisplayName, getNormalizedReferenceName, getOwnPropertyJSDocInfo, getOwnPropertyNames, getOwnSlot, getParentScope, getPossibleToBooleanOutcomes, getPropertiesCount, getPropertyNames, getPropertyNode, getPropertyType, getRootNode, getSlot, hasCachedValues, hasOwnProperty, hasProperty, isFunctionPrototypeType, isObject, isPropertyInExterns, isPropertyTypeDeclared, isPropertyTypeInferred
Methods inherited from class com.google.javascript.rhino.jstype.JSType
autobox, autoboxesTo, canCastTo, canTestForEqualityWith, canTestForShallowEqualityWith, clearResolved, dereference, differsFrom, equals, forceResolve, getGreatestSubtype, getLeastSupertype, getRestrictedTypeGivenToBooleanOutcome, getTypesUnderEquality, getTypesUnderInequality, getTypesUnderShallowEquality, getTypesUnderShallowInequality, hasAnyTemplateTypes, hasDisplayName, isArrayType, isBooleanObjectType, isBooleanValueType, isDateType, isEmptyType, isEnumElementType, isEnumType, isEquivalent, isEquivalentTo, isFunctionType, isGlobalThisType, isInvariant, isNominalConstructor, isNullType, isNumber, isNumberObjectType, isNumberValueType, isRecordType, isRegexpType, isResolved, isString, isStringObjectType, isStringValueType, isTemplateType, isTemplatizedType, isUnionType, isVoidType, matchesInt32Context, matchesUint32Context, resolve, restrictByNotNullOrUndefined, setValidator, toAnnotationString, toMaybeFunctionType, toMaybeTemplateType, toMaybeTemplatizedType, toObjectType, toString, unboxesTo
-
Method Details
-
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
-
toMaybeTemplateType
Description copied from class:JSType
Downcasts this to a TemplateType, or returns null if this is not a function. -
hasAnyTemplateTypesInternal
public boolean hasAnyTemplateTypesInternal() -
visit
Description copied from class:JSType
Visit this type with the given visitor.- Returns:
- the value returned by the visitor
- See Also:
-
hasReferenceName
public boolean hasReferenceName()Description copied from class:ObjectType
Returns true if the object is named.- Overrides:
hasReferenceName
in classObjectType
- Returns:
- true if the object is named, false if it is anonymous
-
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 classJSType
-
matchesStringContext
public boolean matchesStringContext()Description copied from class:JSType
This predicate is used to test whether a given type can appear in aString
context, such as an operand of a string concat (+) operator. All types have at least the potential for converting toString
. When we add externally defined types, such as a browser OM, we may choose to add types that do not automatically convert toString
.- Overrides:
matchesStringContext
in classJSType
-
matchesObjectContext
public boolean matchesObjectContext()Description copied from class:JSType
This predicate is used to test whether a given type can appear in anObject
context, such as the expression in a with statement. Most types we will encounter, except notablynull
, have at least the potential for converting toObject
. Host defined objects can get peculiar.- Overrides:
matchesObjectContext
in classJSType
-
canBeCalled
public boolean canBeCalled()Description copied from class:JSType
This predicate is used to test whether a given type can be used as the 'function' in a function call.- Overrides:
canBeCalled
in classJSType
- Returns:
true
if this type might be callable.
-
isNoType
public boolean isNoType() -
isNoObjectType
public boolean isNoObjectType()- Overrides:
isNoObjectType
in classJSType
-
isNoResolvedType
public boolean isNoResolvedType()- Overrides:
isNoResolvedType
in classJSType
-
isUnknownType
public boolean isUnknownType()Description copied from class:ObjectType
We treat this as the unknown type if any of its implicit prototype properties is unknown.- Overrides:
isUnknownType
in classObjectType
-
isCheckedUnknownType
public boolean isCheckedUnknownType()- Overrides:
isCheckedUnknownType
in classJSType
-
isNullable
public boolean isNullable()Description copied from class:JSType
Tests whether this type is nullable.- Overrides:
isNullable
in classJSType
-
toMaybeEnumType
Description copied from class:JSType
Downcasts this to an EnumType, or returns null if this is not an EnumType.- Overrides:
toMaybeEnumType
in classJSType
-
isConstructor
public boolean isConstructor()Description copied from class:JSType
Whether this type is aFunctionType
that is a constructor or a named type that points to such a type.- Overrides:
isConstructor
in classJSType
-
isNominalType
public boolean isNominalType()Description copied from class:JSType
Whether this type is a nominal type (a named instance object or a named enum).- Overrides:
isNominalType
in classJSType
-
isInstanceType
public boolean isInstanceType()Description copied from class:JSType
Whether this type is an Instance object of some constructor. Does not necessarily mean this is anInstanceObjectType
.- Overrides:
isInstanceType
in classJSType
-
isInterface
public boolean isInterface()Description copied from class:JSType
Whether this type is aFunctionType
that is an interface or a named type that points to such a type.- Overrides:
isInterface
in classJSType
-
isOrdinaryFunction
public boolean isOrdinaryFunction()Description copied from class:JSType
Whether this type is aFunctionType
that is an ordinary function or a named type that points to such a type.- Overrides:
isOrdinaryFunction
in classJSType
-
isAllType
public boolean isAllType() -
isStruct
public boolean isStruct()Description copied from class:JSType
Returns true iffthis
can be astruct
. UnionType overrides the method, assumethis
is not a union here. -
isDict
public boolean isDict()Description copied from class:JSType
Returns true iffthis
can be adict
. UnionType overrides the method, assumethis
is not a union here. -
isNativeObjectType
public boolean isNativeObjectType()Description copied from class:ObjectType
Whether this is a built-in object.- Overrides:
isNativeObjectType
in classObjectType
-
toMaybeUnionType
Description copied from class:JSType
Downcasts this to a UnionType, or returns null if this is not a UnionType. Named in honor of Haskell's Maybe type constructor.- Overrides:
toMaybeUnionType
in classJSType
-
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 classJSType
-
toMaybeEnumElementType
Description copied from class:JSType
Downcasts this to an EnumElementType, or returns null if this is not an EnumElementType.- Overrides:
toMaybeEnumElementType
in classJSType
-
testForEquality
Description copied from class:JSType
Comparesthis
andthat
.- Overrides:
testForEquality
in classObjectType
- Returns:
TernaryValue.TRUE
if the comparison of values ofthis
type andthat
always succeed (such asundefined
compared tonull
)TernaryValue.FALSE
if the comparison of values ofthis
type andthat
always fails (such asundefined
compared tonumber
)TernaryValue.UNKNOWN
if the comparison can succeed or fail depending on the concrete values
-
isSubtype
Description copied from class:JSType
Checks whetherthis
is a subtype ofthat
.Subtyping rules:
- (unknown) — every type is a subtype of the Unknown type.
- (no) — the No type is a subtype of every type.
- (no-object) — the NoObject type is a subtype of every object type (i.e. subtypes of the Object type).
- (ref) — a type is a subtype of itself.
- (union-l) — A union type is a subtype of a type U if all the
union type's constituents are a subtype of U. Formally
(T<sub>1</sub>, …, T<sub>n</sub>) <: U
if and onlyT<sub>k</sub> <: U
for allk ∈ 1..n
. - (union-r) — A type U is a subtype of a union type if it is a
subtype of one of the union type's constituents. Formally
U <: (T<sub>1</sub>, …, T<sub>n</sub>)
if and only ifU <: T<sub>k</sub>
for some indexk
. - (objects) — an Object
O<sub>1</sub>
is a subtype of an objectO<sub>2</sub>
if it has more properties thanO<sub>2</sub>
and all common properties are pairwise subtypes.
-
getOwnerFunction
Description copied from class:ObjectType
Gets the owner of this if it's a function prototype.- Overrides:
getOwnerFunction
in classObjectType
-
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 classObjectType
-
hashCode
public int hashCode() -
getImplicitPrototype
Description copied from class:ObjectType
Gets the implicit prototype (a.k.a. the[[Prototype]]
property).- Specified by:
getImplicitPrototype
in classObjectType
-
removeProperty
Description copied from class:ObjectType
Removes the declared or inferred property from this ObjectType.- Overrides:
removeProperty
in classObjectType
- 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.
-
findPropertyType
Description copied from class:JSType
Coerces this type to an Object type, then gets the type of the property whose name is given. UnlikeObjectType.getPropertyType(java.lang.String)
, returns null if the property is not found.- Overrides:
findPropertyType
in classObjectType
- Returns:
- The property's type.
null
if the current type cannot have properties, or if the type is not found.
-
getJSDocInfo
Description copied from class:ObjectType
Gets the docInfo for this type.- Overrides:
getJSDocInfo
in classObjectType
-
setJSDocInfo
Description copied from class:ObjectType
- Overrides:
setJSDocInfo
in classObjectType
-
setPropertyJSDocInfo
Description copied from class:ObjectType
Sets the docInfo for the specified property from theJSDocInfo
on its definition.- Overrides:
setPropertyJSDocInfo
in classObjectType
info
-JSDocInfo
for the property definition. May benull
.
-
getConstructor
Description copied from class:ObjectType
Gets this object's constructor.- Specified by:
getConstructor
in classObjectType
- Returns:
- this object's constructor or
null
if it is a native object (constructed natively v.s. by instantiation of a function)
-
getTemplateTypes
Description copied from class:ObjectType
Gets the declared default element type.- Overrides:
getTemplateTypes
in classObjectType
- See Also:
-
toDebugHashCodeString
Description copied from class:JSType
A hash code function for diagnosing complicated issues around type-identity.- Overrides:
toDebugHashCodeString
in classJSType
-
getTypeOfThis
Description copied from interface:StaticScope
Returns the expected type ofthis
in the current scope.- Specified by:
getTypeOfThis
in interfaceStaticScope<JSType>
- Overrides:
getTypeOfThis
in classObjectType
-
collapseUnion
Description copied from class:JSType
Gets the least supertype of this that's not a union.- Overrides:
collapseUnion
in classJSType
-
matchConstraint
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 classJSType
-
toMaybeTemplatizedType
Description copied from class:JSType
Downcasts this to a TemplatizedType, or returns null if this is not a function.- Overrides:
toMaybeTemplatizedType
in classJSType
-
getTemplateTypeMap
Description copied from class:JSType
Returns the template type map associated with this type.- Overrides:
getTemplateTypeMap
in classJSType
-