class TypeTransformation
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private class |
TypeTransformation.NameResolver
A helper class for holding the information about the type variables
and the name variables in maprecord expressions
|
Modifier and Type | Field and Description |
---|---|
(package private) static DiagnosticType |
BASETYPE_INVALID |
private AbstractCompiler |
compiler |
(package private) static DiagnosticType |
DUPLICATE_VARIABLE |
(package private) static DiagnosticType |
INDEX_OUTOFBOUNDS |
(package private) static DiagnosticType |
INVALID_CTOR |
(package private) static DiagnosticType |
MAPRECORD_BODY_INVALID |
(package private) static DiagnosticType |
PROPTYPE_INVALID |
(package private) static DiagnosticType |
RECPARAM_INVALID |
(package private) static DiagnosticType |
RECTYPE_INVALID |
private StaticTypedScope<JSType> |
scope |
(package private) static DiagnosticType |
TEMPTYPE_INVALID |
private JSTypeRegistry |
typeRegistry |
(package private) static DiagnosticType |
UNKNOWN_NAMEVAR |
(package private) static DiagnosticType |
UNKNOWN_STRVAR |
(package private) static DiagnosticType |
UNKNOWN_TYPENAME |
(package private) static DiagnosticType |
UNKNOWN_TYPEVAR |
(package private) static DiagnosticType |
VAR_UNDEFINED |
Constructor and Description |
---|
TypeTransformation(AbstractCompiler compiler,
StaticTypedScope<JSType> scope) |
Modifier and Type | Method and Description |
---|---|
private <T> com.google.common.collect.ImmutableMap<java.lang.String,T> |
addNewEntry(com.google.common.collect.ImmutableMap<java.lang.String,T> map,
java.lang.String name,
T type) |
private void |
addNewPropsFromRecordType(java.util.Map<java.lang.String,JSType> props,
RecordType recType) |
private JSType |
buildRecordTypeFromObject(ObjectType objType) |
private JSType |
createRecordType(com.google.common.collect.ImmutableMap<java.lang.String,JSType> props) |
private JSType |
createTemplatizedType(ObjectType baseType,
JSType[] params) |
private JSType |
createUnionType(JSType... variants) |
(package private) JSType |
eval(Node ttlAst,
com.google.common.collect.ImmutableMap<java.lang.String,JSType> typeVars)
Evaluates the type transformation expression and returns the resulting
type.
|
(package private) JSType |
eval(Node ttlAst,
com.google.common.collect.ImmutableMap<java.lang.String,JSType> typeVars,
com.google.common.collect.ImmutableMap<java.lang.String,java.lang.String> nameVars)
Evaluates the type transformation expression and returns the resulting
type.
|
private boolean |
evalBoolean(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private boolean |
evalBooleanOperation(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalConditional(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalInstanceOf(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalInternal(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalMaprecord(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalMapunion(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalNativeTypeExpr(Node ttlAst) |
private JSType |
evalOperationExpression(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalPrintType(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalPropType(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalRawTypeOf(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalRecord(Node record,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalRecordParam(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalRecordType(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private java.lang.String |
evalString(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private java.lang.String[] |
evalStringParams(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private boolean |
evalStringPredicate(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalTemplateTypeOf(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalTemplatizedType(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalTypeExpression(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalTypeName(Node ttlAst) |
private JSType |
evalTypeOfVar(Node ttlAst) |
private JSType[] |
evalTypeParams(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private boolean |
evalTypePredicate(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalTypeVar(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private boolean |
evalTypevarPredicate(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
evalUnionType(Node ttlAst,
TypeTransformation.NameResolver nameResolver) |
private JSType |
getAllType() |
private Node |
getCallArgument(Node n,
int i) |
private java.lang.String |
getCallName(Node n) |
private int |
getCallParamCount(Node n) |
private com.google.common.collect.ImmutableList<Node> |
getCallParams(Node n) |
private java.lang.String |
getComputedPropName(Node n) |
private Node |
getComputedPropValue(Node n) |
private Node |
getFunctionBody(Node n) |
private java.lang.String |
getFunctionParameter(Node n,
int i) |
private JSType |
getNoType() |
private JSType |
getObjectType() |
private StaticTypedScope<JSType> |
getScope(StaticTypedScope<JSType> scope,
java.lang.String name) |
private JSType |
getType(java.lang.String name) |
private JSType |
getUnknownType() |
private boolean |
isBooleanOperation(Node n) |
private boolean |
isTemplatizable(JSType type) |
private boolean |
isTypeName(Node n) |
private boolean |
isTypeVar(Node n) |
private JSType |
joinRecordTypes(com.google.common.collect.ImmutableList<RecordType> recTypes)
Merges a list of record types.
|
private TypeTransformationParser.Keywords |
nameToKeyword(java.lang.String s) |
private void |
putNewPropInPropertyMap(java.util.Map<java.lang.String,JSType> props,
java.lang.String newPropName,
JSType newPropValue) |
private void |
reportWarning(Node n,
DiagnosticType msg,
java.lang.String... param) |
private AbstractCompiler compiler
private JSTypeRegistry typeRegistry
private StaticTypedScope<JSType> scope
static final DiagnosticType UNKNOWN_TYPEVAR
static final DiagnosticType UNKNOWN_STRVAR
static final DiagnosticType UNKNOWN_TYPENAME
static final DiagnosticType BASETYPE_INVALID
static final DiagnosticType TEMPTYPE_INVALID
static final DiagnosticType INDEX_OUTOFBOUNDS
static final DiagnosticType DUPLICATE_VARIABLE
static final DiagnosticType UNKNOWN_NAMEVAR
static final DiagnosticType RECTYPE_INVALID
static final DiagnosticType MAPRECORD_BODY_INVALID
static final DiagnosticType VAR_UNDEFINED
static final DiagnosticType INVALID_CTOR
static final DiagnosticType RECPARAM_INVALID
static final DiagnosticType PROPTYPE_INVALID
TypeTransformation(AbstractCompiler compiler, StaticTypedScope<JSType> scope)
private boolean isTypeVar(Node n)
private boolean isTypeName(Node n)
private boolean isBooleanOperation(Node n)
private TypeTransformationParser.Keywords nameToKeyword(java.lang.String s)
private StaticTypedScope<JSType> getScope(StaticTypedScope<JSType> scope, java.lang.String name)
private JSType getType(java.lang.String name)
private boolean isTemplatizable(JSType type)
private JSType getUnknownType()
private JSType getNoType()
private JSType getAllType()
private JSType getObjectType()
private JSType createTemplatizedType(ObjectType baseType, JSType[] params)
private JSType createRecordType(com.google.common.collect.ImmutableMap<java.lang.String,JSType> props)
private void reportWarning(Node n, DiagnosticType msg, java.lang.String... param)
private <T> com.google.common.collect.ImmutableMap<java.lang.String,T> addNewEntry(com.google.common.collect.ImmutableMap<java.lang.String,T> map, java.lang.String name, T type)
private java.lang.String getFunctionParameter(Node n, int i)
private java.lang.String getCallName(Node n)
private int getCallParamCount(Node n)
private java.lang.String getComputedPropName(Node n)
JSType eval(Node ttlAst, com.google.common.collect.ImmutableMap<java.lang.String,JSType> typeVars)
ttlAst
- The node representing the type transformation
expressiontypeVars
- The environment containing the information about
the type variablesJSType eval(Node ttlAst, com.google.common.collect.ImmutableMap<java.lang.String,JSType> typeVars, com.google.common.collect.ImmutableMap<java.lang.String,java.lang.String> nameVars)
ttlAst
- The node representing the type transformation
expressiontypeVars
- The environment containing the information about
the type variablesnameVars
- The environment containing the information about
the name variablesprivate JSType evalInternal(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalOperationExpression(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalTypeExpression(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalTemplatizedType(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalTypeVar(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalUnionType(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType[] evalTypeParams(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private java.lang.String evalString(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private java.lang.String[] evalStringParams(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private boolean evalTypePredicate(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private boolean evalStringPredicate(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private boolean evalTypevarPredicate(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private boolean evalBooleanOperation(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private boolean evalBoolean(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalConditional(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalMapunion(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalRawTypeOf(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalTemplateTypeOf(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalRecord(Node record, TypeTransformation.NameResolver nameResolver)
private JSType evalRecordParam(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType buildRecordTypeFromObject(ObjectType objType)
private JSType evalRecordType(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private void putNewPropInPropertyMap(java.util.Map<java.lang.String,JSType> props, java.lang.String newPropName, JSType newPropValue)
private void addNewPropsFromRecordType(java.util.Map<java.lang.String,JSType> props, RecordType recType)
private JSType joinRecordTypes(com.google.common.collect.ImmutableList<RecordType> recTypes)
private JSType evalMaprecord(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalInstanceOf(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalPrintType(Node ttlAst, TypeTransformation.NameResolver nameResolver)
private JSType evalPropType(Node ttlAst, TypeTransformation.NameResolver nameResolver)