Class TemplatizedType
- java.lang.Object
-
- com.google.javascript.rhino.jstype.JSType
-
- com.google.javascript.rhino.jstype.ObjectType
-
- com.google.javascript.rhino.jstype.TemplatizedType
-
- All Implemented Interfaces:
StaticScope<JSType>
,java.io.Serializable
public final class TemplatizedType extends ObjectType
An object type with declared template types, such asArray.
.- See Also:
- 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canBeCalled()
This predicate is used to test whether a given type can be used as the 'function' in a function call.JSType
collapseUnion()
Gets the least supertype of this that's not a union.JSType
findPropertyType(java.lang.String propertyName)
Coerces this type to an Object type, then gets the type of the property whose name is given.FunctionType
getConstructor()
Gets this object's constructor.java.lang.Iterable<ObjectType>
getCtorImplementedInterfaces()
Gets the interfaces implemented by the ctor associated with this type.ObjectType
getImplicitPrototype()
Gets the implicit prototype (a.k.a.JSDocInfo
getJSDocInfo()
Gets the docInfo for this type.FunctionType
getOwnerFunction()
Gets the owner of this if it's a function prototype.ObjectType
getReferencedType()
java.lang.String
getReferenceName()
Gets the reference name for this object.TemplateTypeMap
getTemplateTypeMap()
Returns the template type map associated with this type.com.google.common.collect.ImmutableList<JSType>
getTemplateTypes()
Gets the declared default element type.JSType
getTypeOfThis()
Returns the expected type ofthis
in the current scope.boolean
hasAnyTemplateTypesInternal()
int
hashCode()
boolean
hasReferenceName()
Returns true if the object is named.boolean
isAllType()
boolean
isCheckedUnknownType()
boolean
isConstructor()
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
isInstanceType()
Whether this type is an Instance object of some constructor.boolean
isInterface()
Whether this type is aFunctionType
that is an interface or a named type that points to such a type.boolean
isNativeObjectType()
Whether this is a built-in object.boolean
isNominalType()
Whether this type is a nominal type (a named instance object or a named enum).boolean
isNoObjectType()
boolean
isNoResolvedType()
boolean
isNoType()
boolean
isNullable()
Tests whether this type is nullable.boolean
isOrdinaryFunction()
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
isSubtype(JSType that)
Checks whetherthis
is a subtype ofthat
.boolean
isUnknownType()
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
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 anObject
context, such as the expression in a with statement.boolean
matchesStringContext()
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(java.lang.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(java.lang.String propertyName, JSDocInfo info)
Sets the docInfo for the specified property from theJSDocInfo
on its definition.TernaryValue
testForEquality(JSType that)
Comparesthis
andthat
.java.lang.String
toDebugHashCodeString()
A hash code function for diagnosing complicated issues around type-identity.EnumElementType
toMaybeEnumElementType()
Downcasts this to an EnumElementType, or returns null if this is not an EnumElementType.EnumType
toMaybeEnumType()
Downcasts this to an EnumType, or returns null if this is not an EnumType.FunctionType
toMaybeFunctionType()
Downcasts this to a FunctionType, or returns null if this is not a function.TemplateType
toMaybeTemplateType()
Downcasts this to a TemplateType, or returns null if this is not a function.TemplatizedType
toMaybeTemplatizedType()
Downcasts this to a TemplatizedType, or returns null if this is not a function.UnionType
toMaybeUnionType()
Downcasts this to a UnionType, or returns null if this is not a UnionType.<T> T
visit(Visitor<T> visitor)
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 Detail
-
visit
public <T> T visit(Visitor<T> visitor)
Description copied from class:JSType
Visit this type with the given visitor.- Returns:
- the value returned by the visitor
- See Also:
Visitor
-
toMaybeTemplatizedType
public TemplatizedType toMaybeTemplatizedType()
Description copied from class:JSType
Downcasts this to a TemplatizedType, or returns null if this is not a function.
-
getTemplateTypes
public com.google.common.collect.ImmutableList<JSType> getTemplateTypes()
Description copied from class:ObjectType
Gets the declared default element type.- See Also:
TemplatizedType
-
isSubtype
public boolean isSubtype(JSType that)
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.
- Returns:
this <: that
-
getTemplateTypeMap
public TemplateTypeMap getTemplateTypeMap()
Description copied from class:JSType
Returns the template type map associated with this type.
-
hasAnyTemplateTypesInternal
public boolean hasAnyTemplateTypesInternal()
-
getReferencedType
public ObjectType getReferencedType()
- Returns:
- The referenced ObjectType wrapped by this TemplatizedType.
-
getReferenceName
public java.lang.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.- Specified by:
getReferenceName
in classObjectType
- Returns:
- the object's name or
null
if this is an anonymous object
-
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.
-
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
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 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
-
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
public UnionType 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
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 classJSType
-
toMaybeEnumElementType
public EnumElementType 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
public TernaryValue testForEquality(JSType that)
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
-
getOwnerFunction
public FunctionType getOwnerFunction()
Description copied from class:ObjectType
Gets the owner of this if it's a function prototype.- Overrides:
getOwnerFunction
in classObjectType
-
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 classObjectType
-
getImplicitPrototype
public ObjectType getImplicitPrototype()
Description copied from class:ObjectType
Gets the implicit prototype (a.k.a. the[[Prototype]]
property).- Specified by:
getImplicitPrototype
in classObjectType
-
removeProperty
public boolean removeProperty(java.lang.String name)
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
public JSType findPropertyType(java.lang.String propertyName)
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
public JSDocInfo getJSDocInfo()
Description copied from class:ObjectType
Gets the docInfo for this type.- Overrides:
getJSDocInfo
in classObjectType
-
setJSDocInfo
public void setJSDocInfo(JSDocInfo info)
Description copied from class:ObjectType
- Overrides:
setJSDocInfo
in classObjectType
-
setPropertyJSDocInfo
public void setPropertyJSDocInfo(java.lang.String propertyName, JSDocInfo info)
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
public FunctionType 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)
-
toDebugHashCodeString
public java.lang.String toDebugHashCodeString()
Description copied from class:JSType
A hash code function for diagnosing complicated issues around type-identity.- Overrides:
toDebugHashCodeString
in classJSType
-
getTypeOfThis
public JSType 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
public JSType collapseUnion()
Description copied from class:JSType
Gets the least supertype of this that's not a union.- Overrides:
collapseUnion
in classJSType
-
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 classJSType
-
toMaybeTemplateType
public TemplateType toMaybeTemplateType()
Description copied from class:JSType
Downcasts this to a TemplateType, or returns null if this is not a function.- Overrides:
toMaybeTemplateType
in classJSType
-
-