public final class NominalType
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private static Pattern |
NUMERIC_PATTERN |
private RawNominalType |
rawType |
private com.google.common.collect.ImmutableMap<java.lang.String,JSType> |
typeMap |
Constructor and Description |
---|
NominalType(com.google.common.collect.ImmutableMap<java.lang.String,JSType> typeMap,
RawNominalType rawType) |
Modifier and Type | Method and Description |
---|---|
(package private) java.lang.StringBuilder |
appendTo(java.lang.StringBuilder builder) |
private boolean |
areTypeMapsCompatible(NominalType other) |
boolean |
equals(java.lang.Object other) |
private NominalType |
findMatchingAncestorWith(NominalType other) |
com.google.common.collect.ImmutableSet<java.lang.String> |
getAllPropsOfClass() |
com.google.common.collect.ImmutableSet<java.lang.String> |
getAllPropsOfInterface() |
RawNominalType |
getId() |
(package private) JSType |
getIndexedType() |
(package private) JSType |
getIndexType() |
JSType |
getInstanceAsJSType() |
com.google.common.collect.ImmutableSet<NominalType> |
getInstantiatedInterfaces() |
NominalType |
getInstantiatedSuperclass() |
java.lang.String |
getName() |
(package private) ObjectKind |
getObjectKind() |
(package private) Property |
getProp(java.lang.String pname) |
JSType |
getPropDeclaredType(java.lang.String pname) |
JSType |
getPrototype() |
RawNominalType |
getRawNominalType() |
(package private) java.util.Map<java.lang.String,JSType> |
getTypeMap() |
(package private) boolean |
hasAncestorClass(RawNominalType ancestor) |
(package private) boolean |
hasAncestorInterface(RawNominalType ancestor) |
boolean |
hasConstantProp(java.lang.String pname) |
int |
hashCode() |
(package private) NominalType |
instantiateGenerics(java.util.List<JSType> types) |
(package private) NominalType |
instantiateGenerics(java.util.Map<java.lang.String,JSType> newTypeMap) |
private boolean |
instantiationIsUnknownOrIdentity() |
boolean |
isBuiltinObject() |
boolean |
isClass() |
(package private) boolean |
isClassy() |
boolean |
isDict() |
boolean |
isFinalized() |
(package private) boolean |
isFunction() |
boolean |
isGeneric() |
boolean |
isInterface() |
private boolean |
isIObject() |
(package private) boolean |
isNominalSubtypeOf(NominalType other) |
boolean |
isStruct() |
(package private) boolean |
isStructuralInterface() |
private boolean |
isStructuralSubtypeOf(NominalType other,
SubtypeCache subSuperMap) |
(package private) boolean |
isSubtypeOf(NominalType other,
SubtypeCache subSuperMap) |
boolean |
isUninstantiatedGenericType() |
(package private) static NominalType |
pickSubclass(NominalType c1,
NominalType c2) |
(package private) static NominalType |
pickSuperclass(NominalType c1,
NominalType c2) |
java.lang.String |
toString() |
(package private) static NominalType |
unifyUnknowns(NominalType nt1,
NominalType nt2)
Unify the two types symmetrically, given that we have already instantiated
the type variables of interest in
nt1 and nt2 , treating
JSType.UNKNOWN as a "hole" to be filled. |
(package private) boolean |
unifyWithSubtype(NominalType other,
java.util.List<java.lang.String> typeParameters,
com.google.common.collect.Multimap<java.lang.String,JSType> typeMultimap,
SubtypeCache subSuperMap) |
private final com.google.common.collect.ImmutableMap<java.lang.String,JSType> typeMap
private final RawNominalType rawType
private static final Pattern NUMERIC_PATTERN
NominalType(com.google.common.collect.ImmutableMap<java.lang.String,JSType> typeMap, RawNominalType rawType)
public RawNominalType getRawNominalType()
public JSType getInstanceAsJSType()
ObjectKind getObjectKind()
java.util.Map<java.lang.String,JSType> getTypeMap()
JSType getIndexType()
JSType getIndexedType()
boolean isClassy()
boolean isFunction()
public boolean isBuiltinObject()
private boolean isIObject()
public boolean isStruct()
public boolean isDict()
public boolean isGeneric()
public boolean isUninstantiatedGenericType()
NominalType instantiateGenerics(java.util.List<JSType> types)
NominalType instantiateGenerics(java.util.Map<java.lang.String,JSType> newTypeMap)
public java.lang.String getName()
public RawNominalType getId()
public boolean isClass()
public boolean isInterface()
boolean isStructuralInterface()
public boolean isFinalized()
boolean hasAncestorClass(RawNominalType ancestor)
boolean hasAncestorInterface(RawNominalType ancestor)
public com.google.common.collect.ImmutableSet<java.lang.String> getAllPropsOfInterface()
public com.google.common.collect.ImmutableSet<java.lang.String> getAllPropsOfClass()
public NominalType getInstantiatedSuperclass()
public JSType getPrototype()
public com.google.common.collect.ImmutableSet<NominalType> getInstantiatedInterfaces()
Property getProp(java.lang.String pname)
public JSType getPropDeclaredType(java.lang.String pname)
public boolean hasConstantProp(java.lang.String pname)
boolean isSubtypeOf(NominalType other, SubtypeCache subSuperMap)
private boolean isStructuralSubtypeOf(NominalType other, SubtypeCache subSuperMap)
boolean isNominalSubtypeOf(NominalType other)
private boolean areTypeMapsCompatible(NominalType other)
static NominalType unifyUnknowns(NominalType nt1, NominalType nt2)
nt1
and nt2
, treating
JSType.UNKNOWN as a "hole" to be filled.private boolean instantiationIsUnknownOrIdentity()
static NominalType pickSuperclass(NominalType c1, NominalType c2)
static NominalType pickSubclass(NominalType c1, NominalType c2)
boolean unifyWithSubtype(NominalType other, java.util.List<java.lang.String> typeParameters, com.google.common.collect.Multimap<java.lang.String,JSType> typeMultimap, SubtypeCache subSuperMap)
private NominalType findMatchingAncestorWith(NominalType other)
public java.lang.String toString()
toString
in class java.lang.Object
java.lang.StringBuilder appendTo(java.lang.StringBuilder builder)
public int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object other)
equals
in class java.lang.Object