public class InferredType
extends org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode
Modifier and Type | Field and Description |
---|---|
static char[] |
ARRAY_NAME |
InferredAttribute[] |
attributes |
org.eclipse.wst.jsdt.internal.compiler.util.HashtableOfObject |
attributesHash |
org.eclipse.wst.jsdt.internal.compiler.lookup.SourceTypeBinding |
binding |
static char[] |
FUNCTION_NAME |
static char[] |
GLOBAL_NAME
Deprecated.
- no longer used
|
java.lang.String |
inferenceProviderID |
java.lang.String |
inferenceStyle |
boolean |
isAnonymous |
boolean |
isArray |
boolean |
isDefinition
Deprecated.
this will not remain public forever
|
boolean |
isObjectLiteral |
java.util.ArrayList |
methods |
java.util.ArrayList |
mixins |
int |
modifiers |
int |
numberAttributes |
static char[] |
OBJECT_LITERAL_NAME
Deprecated.
this is not used internally, this will be removed
|
static char[] |
OBJECT_NAME |
InferredType |
referenceClass |
org.eclipse.wst.jsdt.internal.compiler.lookup.ClassScope |
scope |
InferredType |
superClass
The parent type of this type, or
null if this type does not have a parent type
NOTE: This field should not be accessed directly, use the appropriate getter and setter. |
java.lang.Object |
userData
Deprecated.
this is not used internally, this will be removed
|
static char[] |
VOID_NAME |
Bit1, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15, Bit16, Bit17, Bit18, Bit19, Bit2, Bit20, Bit21, Bit22, Bit23, Bit24, Bit25, Bit26, Bit27, Bit28, Bit29, Bit3, Bit30, Bit31, Bit32, Bit32L, Bit33L, Bit34L, Bit35L, Bit36L, Bit37L, Bit38L, Bit39L, Bit4, Bit40L, Bit41L, Bit42L, Bit43L, Bit44L, Bit45L, Bit46L, Bit47L, Bit48L, Bit49L, Bit5, Bit50L, Bit51L, Bit52L, Bit53L, Bit54L, Bit55L, Bit56L, Bit57L, Bit58L, Bit59L, Bit6, Bit60L, Bit61L, Bit62L, Bit63L, Bit64L, Bit7, Bit8, Bit9, bits, BlockExit, ContainsAssertion, DepthMASK, DepthSHIFT, DidResolve, DiscardEnclosingInstance, DocumentedFallthrough, Empty, ErrorInSignature, FirstAssignmentToLocal, HasAbstractMethods, HasAllMethodBodies, HasBeenGenerated, HasBeenResolved, HasLocalType, IgnoreNoEffectAssignCheck, IgnoreRawTypeCheck, InsideJavadoc, INVOCATION_ARGUMENT_OK, INVOCATION_ARGUMENT_UNCHECKED, IsAnonymousType, IsAnySubRoutineEscaping, IsCompoundAssigned, IsDefaultConstructor, IsElseIfStatement, IsFileImport, IsImplicitThis, IsImplicitUnit, IsInferredJsDocType, IsInferredType, IsLocalDeclarationReachable, IsLocalType, IsMemberType, IsNonNull, IsReachable, IsReturnedValue, IsSecondaryType, IsStrictlyAssigned, IsSubRoutineEscaping, IsSuperType, IsTryBlockExiting, IsUsefulEmptyStatement, IsVarArgs, LabelUsed, NeededScope, NeedFreeReturn, OnDemand, OperatorMASK, OperatorSHIFT, OverridingMethodWithSupercall, ParenthesizedMASK, ParenthesizedSHIFT, RestrictiveFlagMASK, ReturnTypeIDMASK, sourceEnd, sourceStart, SuperAccess, ThenExit, UndocumentedEmptyBlock, Used
ANONYM_PREFIX, ANONYM_SUFFIX, ANY, ARRAY, BOOLEAN, BOOLEAN_OBJECT, CHAR, CharArray_JAVA_LANG_OBJECT, CLINIT, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, DOUBLE, ERROR, FLOAT, FUNCTION, GETCLASS, INIT, INT, JAVA, JAVA_LANG, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_BOOLEAN, JAVA_LANG_CHARACTER, JAVA_LANG_CLASS, JAVA_LANG_DOUBLE, JAVA_LANG_ERROR, JAVA_LANG_EXCEPTION, JAVA_LANG_FLOAT, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_OBJECT, JAVA_LANG_RUNTIMEEXCEPTION, JAVA_LANG_SHORT, JAVA_LANG_STRING, JAVA_LANG_SYSTEM, JAVA_LANG_THROWABLE, JAVA_LANG_VOID, LANG, LENGTH, LONG, MISMATCH, NULL, NUMBER, OBJECT, OK, PACKAGE_INFO_NAME, PROTOTYPE, READOBJECT, READRESOLVE, REFLECT, REGEXP, SHORT, SYSTEMJS, TYPE, UNCHECKED, UNDEFINED, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALUE, VALUEOF, VALUES, VOID, WRITEOBJECT, WRITEREPLACE
Boolean2Boolean, Boolean2Int, Boolean2String, BOXING, Char2Char, Char2Double, Char2Float, Char2Int, Char2Long, Char2Short, Char2String, COMPILE_TYPE_MASK, Double2Char, Double2Double, Double2Float, Double2Int, Double2Long, Double2Short, Double2String, Float2Char, Float2Double, Float2Float, Float2Int, Float2Long, Float2Short, Float2String, IMPLICIT_CONVERSION_MASK, Int2Char, Int2Double, Int2Float, Int2Int, Int2Long, Int2Short, Int2String, Long2Char, Long2Double, Long2Float, Long2Int, Long2Long, Long2Short, Long2String, NoId, Null2String, Object2Object, Object2String, Short2Char, Short2Double, Short2Float, Short2Int, Short2Long, Short2Short, Short2String, String2String, T_any, T_boolean, T_char, T_double, T_float, T_function, T_int, T_JavaLangAssertionError, T_JavaLangBoolean, T_JavaLangCharacter, T_JavaLangClass, T_JavaLangClassNotFoundException, T_JavaLangDeprecated, T_JavaLangDouble, T_JavaLangError, T_JavaLangException, T_JavaLangFloat, T_JavaLangIllegalArgumentException, T_JavaLangInteger, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangRuntimeException, T_JavaLangShort, T_JavaLangString, T_JavaLangStringBuffer, T_JavaLangStringBuilder, T_JavaLangSuppressWarnings, T_JavaLangSystem, T_JavaLangThrowable, T_JavaLangVoid, T_JavaUtilIterator, T_last_basic, T_long, T_null, T_short, T_undefined, T_void, UNBOXING
ABSTRACT_FUNCTION_DECLARATION, ABSTRACT_VARIABLE_DECLARATION, ALLOCATION_EXPRESSION, AND_AND_EXPRESSION, ARGUMENT, ARRAY_ALLOCATION_EXPRESSION, ARRAY_INITIALIZER, ARRAY_QUALIFIED_TYPE_REFERENCE, ARRAY_REFERENCE, ARRAY_TYPE_REFERENCE, ASSIGNMENT, AST_NODE, BINARY_EXPRESSION, BLOCK, BRANCH_STATEMENT, BREAK_STATEMENT, CASE_STATEMENT, CHAR_LITERAL, CL_INIT, CLASS_LITERAL_ACCESS, COMBINED_BINARY_EXPRESSION, COMPOUND_ASSIGNMENT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_DECLARATION, CONTINUE_STATEMENT, DO_STATEMENT, DOUBLE_LITERAL, EMPTY_EXPRESSION, EMPTY_STATEMENT, EQUAL_EXPRESSION, EXPLICIT_CONSTRUCTOR_CALL, EXPRESSION, EXTENDED_STRING_LITERAL, FALSE_LITERAL, FIELD_DECLARATION, FIELD_REFERENCE, FLOAT_LITERAL, FOR_EACH_STATEMENT, FOR_IN_STATEMENT, FOR_STATEMENT, FUNCTION_CALL, FUNCTION_DECLARATION, FUNCTION_EXPRESSION, IF_STATEMENT, IMPORT_REFERENCE, INITIALIZER, INSTANCEOF_EXPRESSION, INT_LITERAL, INT_LITERAL_MIN_VALUE, JSDOC, JSDOC_ALLOCATION_EXPRESSION, JSDOC_ARGUMENTEXPRESSION, JSDOC_ARRAY_QUALIFIED_TYPE_REFERENCE, JSDOC_ARRAY_SINGLE_TYPE_REFERENCE, JSDOC_FIELD_REFERENCE, JSDOC_IMPLICIT_TYPE_REFERENCE, JSDOC_MESSAGE_SEND, JSDOC_QUALIFIED_TYPE_REFERENCE, JSDOC_RETURN_STATEMENT, JSDOC_SINGLE_NAME_REFERENCE, JSDOC_SINGLE_TYPE_REFERENCE, LABELED_STATEMENT, LIST_EXPRESSION, LITERAL, LOCAL_DECLARATION, LONG_LITERAL, LONG_LITERAL_MIN_VALUE, MAGIC_LITERAL, NAME_REFERENCE, NULL_LITERAL, NUMBER_LITERAL, OBJECT_GETTER_SETTER_FIELD, OBJECT_LITERAL, OBJECT_LITERAL_FIELD, OPERATOR_EXPRESSION, OR_OR_EXPRESSION, PARAMETERIZED_QUALIFIED_TYPE_REFERENCE, PARAMETERIZED_SINGLE_TYPE_REFERENCE, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PROGRAM_ELEMENT, QUALIFIED_ALLOCATION_EXPRESSION, QUALIFIED_NAME_REFERENCE, QUALIFIED_SUPER_REFERENCE, QUALIFIED_THIS_REFERENCE, QUALIFIED_TYPE_REFERENCE, REFERENCE, REG_EX_LITERAL, RETURN_STATEMENT, SCRIPT_FILE_DECLARATION, SINGLE_NAME_REFERENCE, SINGLE_TYPE_REFERENCE, STATEMENT, STRING_LITERAL, STRING_LITERAL_CONCATENATION, SUB_ROUTINE_STATEMENT, SUPER_REFERENCE, SWITCH_STATEMENT, THIS_REFERENCE, THROW_STATEMENT, TRUE_LITERAL, TRY_STATEMENT, TYPE_DECLARATION, TYPE_PARAMETER, TYPE_REFERENCE, UNARY_EXPRESSION, UNDEFINED_LITERAL, WHILE_STATEMENT, WITH_STATEMENT
Constructor and Description |
---|
InferredType(char[] className)
Create a new inferred type
|
Modifier and Type | Method and Description |
---|---|
InferredAttribute |
addAttribute(char[] name,
IASTNode definer,
int nameStart)
Add a new inferred attribute to the inferred type
|
InferredAttribute |
addAttribute(InferredAttribute newAttribute)
Add an InferredAttribute to this inferred type.
|
InferredMethod |
addConstructorMethod(char[] methodName,
IFunctionDeclaration functionDeclaration,
int nameStart)
Add a new constructor method to the inferred type
|
InferredMethod |
addMethod(char[] methodName,
IFunctionDeclaration functionDeclaration,
int nameStart)
Add a new method to the inferred type
|
void |
addMixin(char[] mixinTypeName)
Adds the name of a type to mix into this type during the resolving step.
|
void |
addSynonym(InferredType type) |
boolean |
containsMethod(IAbstractFunctionDeclaration inMethod) |
IAbstractFunctionDeclaration |
declarationOf(org.eclipse.wst.jsdt.internal.compiler.lookup.MethodBinding methodBinding) |
void |
dumpReference(java.lang.StringBuffer sb) |
InferredAttribute |
findAttribute(char[] name)
Find the inferred attribute with the given name
|
InferredMethod |
findMethod(char[] methodName,
IFunctionDeclaration methodDeclaration)
Find an inferred method
|
IFunctionDeclaration |
getCorrespondingFunction() |
int |
getModifiers() |
char[] |
getName()
Gets the name of the inferred type
|
int |
getNameStart() |
char[] |
getSuperClassName()
Get the superclass name of the inferred type
|
InferredType |
getSuperType() |
InferredType[] |
getSynonyms() |
boolean |
isArray() |
boolean |
isDefinition() |
boolean |
isEmptyGlobal()
Deprecated.
- no longer used
|
boolean |
isFunction() |
boolean |
isGlobal() |
boolean |
isIndexed()
Determines if this type should be indexed or not.
|
boolean |
isInferred() |
boolean |
isNamed() |
boolean |
isVoid() |
void |
mixin(InferredType mixin)
Mixes an
InferredType into this InferredType right now. |
void |
mixin(InferredType mixin,
boolean isDeepCopy)
Mixes an
InferredType into this InferredType . |
java.lang.StringBuffer |
print(int indent,
java.lang.StringBuffer output) |
InferredAttribute |
replaceAttribute(char[] name,
IASTNode definer,
int nameStart)
Adds a new inferred attribute to the inferred type if it doesn't already exist
otherwise it replaces the existing one with the new one.
|
org.eclipse.wst.jsdt.internal.compiler.lookup.ReferenceBinding |
resolveSuperType(org.eclipse.wst.jsdt.internal.compiler.lookup.ClassScope classScope) |
org.eclipse.wst.jsdt.internal.compiler.lookup.TypeBinding |
resolveType(org.eclipse.wst.jsdt.internal.compiler.lookup.Scope scope,
org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode node) |
void |
setCorrespondingFunction(IFunctionDeclaration coorespondingFunction) |
void |
setIsDefinition(boolean isDefinition) |
void |
setIsGlobal(boolean isGlobal)
EX: The anonymous type for a global variable would be globally visible, the anonymous type
for a local would not.
|
void |
setModifiers(int modifiers) |
void |
setNameStart(int start)
Set the charactor position (in the source) of the type name
|
void |
setSuperType(InferredType superType)
Sets the super type of this type unless the given super type is
itself then this is a no op
|
void |
updatePositions(int start,
int end) |
checkInvocationArguments, concreteStatement, getASTType, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isTypeUseDeprecated, printIndent, printModifiers, setSourceEnd, sourceEnd, sourceStart, toString, traverse, traverse
public java.util.ArrayList methods
public InferredAttribute[] attributes
public int numberAttributes
public org.eclipse.wst.jsdt.internal.compiler.util.HashtableOfObject attributesHash
public InferredType superClass
The parent type of this type, or null
if this type does not have a parent type
NOTE: This field should not be accessed directly, use the appropriate getter and setter.
#setSuperType(InferredType)}
,
#getSuperType()}
public InferredType referenceClass
public org.eclipse.wst.jsdt.internal.compiler.lookup.SourceTypeBinding binding
public boolean isDefinition
isDefinition()
,
setIsDefinition(boolean)
public org.eclipse.wst.jsdt.internal.compiler.lookup.ClassScope scope
public boolean isArray
public boolean isAnonymous
public boolean isObjectLiteral
public java.lang.String inferenceProviderID
public java.lang.String inferenceStyle
public java.util.ArrayList mixins
public int modifiers
public static final char[] OBJECT_NAME
public static final char[] OBJECT_LITERAL_NAME
public static final char[] ARRAY_NAME
public static final char[] FUNCTION_NAME
public static final char[] VOID_NAME
public static final char[] GLOBAL_NAME
public java.lang.Object userData
public InferredType(char[] className)
className
- inferred type namepublic int getModifiers()
public char[] getName()
public char[] getSuperClassName()
public InferredAttribute addAttribute(char[] name, IASTNode definer, int nameStart)
name
- the attribute namedefiner
- the ASTNode which this attribute is inferred fromnameStart
- character position (in the source) of the attribute namepublic InferredAttribute replaceAttribute(char[] name, IASTNode definer, int nameStart)
name
- the attribute namedefiner
- the ASTNode which this attribute is inferred fromnameStart
- character position (in the source) of the attribute namepublic InferredAttribute addAttribute(InferredAttribute newAttribute)
newAttribute
- the attribute to add.public InferredAttribute findAttribute(char[] name)
name
- name of the attribute to findpublic InferredMethod addConstructorMethod(char[] methodName, IFunctionDeclaration functionDeclaration, int nameStart)
methodName
- name of the method to addfunctionDeclaration
- the AST Node containing the method bodenameStart
- character position (in the source) of the method namepublic InferredMethod addMethod(char[] methodName, IFunctionDeclaration functionDeclaration, int nameStart)
methodName
- name of the method to addfunctionDeclaration
- the AST Node containing the method bodenameStart
- character position (in the source) of the method namepublic InferredMethod findMethod(char[] methodName, IFunctionDeclaration methodDeclaration)
methodName
- name of the method to findmethodDeclaration
- not usedpublic org.eclipse.wst.jsdt.internal.compiler.lookup.TypeBinding resolveType(org.eclipse.wst.jsdt.internal.compiler.lookup.Scope scope, org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode node)
public void dumpReference(java.lang.StringBuffer sb)
public boolean containsMethod(IAbstractFunctionDeclaration inMethod)
public org.eclipse.wst.jsdt.internal.compiler.lookup.ReferenceBinding resolveSuperType(org.eclipse.wst.jsdt.internal.compiler.lookup.ClassScope classScope)
public boolean isArray()
public boolean isFunction()
public boolean isVoid()
public java.lang.StringBuffer print(int indent, java.lang.StringBuffer output)
print
in class org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode
public boolean isInferred()
isInferred
in class org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode
public void updatePositions(int start, int end)
public IAbstractFunctionDeclaration declarationOf(org.eclipse.wst.jsdt.internal.compiler.lookup.MethodBinding methodBinding)
public boolean isNamed()
true
if this type is anonymous or the the type
name starts with the anonymous prefix, false
otherwisepublic void setModifiers(int modifiers)
modifiers
- the modifiers to setpublic void setNameStart(int start)
start
- type name positionpublic int getNameStart()
public boolean isEmptyGlobal()
public void addMixin(char[] mixinTypeName)
Adds the name of a type to mix into this type during the resolving step.
Use mixin(InferredType)
if the type to mixin is an anonymous type
since anonymous types are only available at the inference step and will not be
available at the resolve step when mixins added with this method are mixed in.
NOTE: Do not confuse this with dojo.mixin()
, this operation is actually
more akin to dojo.extend
mixinTypeName
- the name of the type to mix into this typepublic void mixin(InferredType mixin)
Mixes an InferredType
into this InferredType
right now. Thus if the type being
mixed in changes at all, fields or methods added/removed, at a later point those changes will
not get reflected in this inferred type. Thus this method should only be used when it is certain the
mixin type will not change again, such as during the resolving step or an ObjectLiteral
during
the inference step.
NOTE: Do not confuse this with dojo.mixin()
, this operation is actually
more akin to dojo.extend
mixin
- public void mixin(InferredType mixin, boolean isDeepCopy)
Mixes an InferredType
into this InferredType
. By passing true for the second argument,
objects will be recursively mixed. This means that if a property of the first object is itself an object,
a mix will be performed if a property with the same key exists in the second object. Otherwise it would be completely
overriden by the property of the second object.
mixin
- public InferredType getSuperType()
InferredType
of this InferredType
, or
null
if none is setpublic void setSuperType(InferredType superType)
Sets the super type of this type unless the given super type is itself then this is a no op
superType
- InferredType
to set as the super type of this type,
can not be the same as this typepublic boolean isIndexed()
Determines if this type should be indexed or not. A type should be indexed if it is named or has specifically been set to be a global type.
true
if this type should be indexed, false
otherwiseisNamed()
,
isGlobal()
public void setIsGlobal(boolean isGlobal)
EX: The anonymous type for a global variable would be globally visible, the anonymous type for a local would not.
isGlobal
- true
if this type is a globally visible type, false
otherwise.public boolean isGlobal()
true
if this type is a globally visible type, false
otherwise.public boolean isDefinition()
true
if this type is a definition,
false
otherwisepublic void setIsDefinition(boolean isDefinition)
isDefinition
- true
if this type is a definition,
false
otherwisepublic InferredType[] getSynonyms()
public void addSynonym(InferredType type)
type
- - adds a type for which this type is synonymouspublic IFunctionDeclaration getCorrespondingFunction()
public void setCorrespondingFunction(IFunctionDeclaration coorespondingFunction)
coorespondingFunction
- the coorespondingFunction to setCopyright (c) IBM Corp. and others 2000, 2016. All Rights Reserved.