org.eclipse.wst.jsdt.core.infer
Class InferredType

java.lang.Object
  extended by org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode
      extended by org.eclipse.wst.jsdt.core.infer.InferredType
All Implemented Interfaces:
IASTNode, org.eclipse.wst.jsdt.internal.compiler.lookup.TypeConstants, org.eclipse.wst.jsdt.internal.compiler.lookup.TypeIds

public class InferredType
extends org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode

The represenation of an inferred type. Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.


Field Summary
static char[] ARRAY_NAME
           
 InferredAttribute[] attributes
           
 org.eclipse.wst.jsdt.internal.compiler.lookup.SourceTypeBinding binding
           
static char[] GLOBAL_NAME
           
 java.lang.String inferenceProviderID
           
 java.lang.String inferenceStyle
           
 boolean isAnonymous
           
 boolean isArray
           
 boolean isDefinition
           
 boolean isObjectLiteral
           
 java.util.ArrayList methods
           
 int numberAttributes
           
static char[] OBJECT_LITERAL_NAME
           
static char[] OBJECT_NAME
           
 InferredType referenceClass
           
 org.eclipse.wst.jsdt.internal.compiler.lookup.ClassScope scope
           
 InferredType superClass
           
 java.lang.Object userData
           
 
Fields inherited from class org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode
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, DisableUnnecessaryCastCheck, DiscardEnclosingInstance, DocumentedFallthrough, Empty, ErrorInSignature, FirstAssignmentToLocal, GenerateCheckcast, HasAbstractMethods, HasAllMethodBodies, HasBeenGenerated, HasBeenResolved, HasLocalType, IgnoreNoEffectAssignCheck, IgnoreRawTypeCheck, InsideJavadoc, INVOCATION_ARGUMENT_OK, INVOCATION_ARGUMENT_UNCHECKED, INVOCATION_ARGUMENT_WILDCARD, IsAnnotationDefaultValue, 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, UnnecessaryCast, UnsafeCast, Used
 
Fields inherited from interface org.eclipse.wst.jsdt.internal.compiler.lookup.TypeConstants
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, ANY, ARRAY, BOOLEAN, BOOLEAN_OBJECT, BYTE, CHAR, CharArray_JAVA_IO_OBJECTINPUTSTREAM, CharArray_JAVA_IO_OBJECTOUTPUTSTREAM, CharArray_JAVA_IO_OBJECTSTREAMFIELD, CharArray_JAVA_LANG_ANNOTATION_ANNOTATION, CharArray_JAVA_LANG_ENUM, CharArray_JAVA_LANG_OBJECT, CLINIT, CLONE, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, DOUBLE, ERROR, FLOAT, FUNCTION, GETCLASS, INIT, INT, IO, JAVA, JAVA_IO, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_SERIALIZABLE, JAVA_LANG, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_BOOLEAN, JAVA_LANG_BYTE, JAVA_LANG_CHARACTER, JAVA_LANG_CLASS, JAVA_LANG_CLASSNOTFOUNDEXCEPTION, JAVA_LANG_CLONEABLE, JAVA_LANG_DEPRECATED, JAVA_LANG_DOUBLE, JAVA_LANG_ENUM, JAVA_LANG_ERROR, JAVA_LANG_EXCEPTION, JAVA_LANG_FLOAT, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIMEEXCEPTION, JAVA_LANG_SHORT, JAVA_LANG_STRING, JAVA_LANG_STRINGBUFFER, JAVA_LANG_STRINGBUILDER, JAVA_LANG_SUPPRESSWARNINGS, JAVA_LANG_SYSTEM, JAVA_LANG_THROWABLE, JAVA_LANG_VOID, JAVA_UTIL_ITERATOR, LANG, LENGTH, LONG, MAIN, MISMATCH, NULL, NUMBER, OBJECT, OK, PACKAGE_INFO_NAME, PROTOTYPE, READOBJECT, READRESOLVE, REFLECT, REGEXP, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_SWITCH_ENUM_TABLE, SYSTEMJS, TYPE, UNCHECKED, UNDEFINED, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALUE, VALUEOF, VALUES, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE
 
Fields inherited from interface org.eclipse.wst.jsdt.internal.compiler.lookup.TypeIds
Boolean2Boolean, Boolean2Int, Boolean2String, BOXING, Byte2Byte, Byte2Char, Byte2Double, Byte2Float, Byte2Int, Byte2Long, Byte2Short, Byte2String, Char2Byte, Char2Char, Char2Double, Char2Float, Char2Int, Char2Long, Char2Short, Char2String, COMPILE_TYPE_MASK, Double2Byte, Double2Char, Double2Double, Double2Float, Double2Int, Double2Long, Double2Short, Double2String, Float2Byte, Float2Char, Float2Double, Float2Float, Float2Int, Float2Long, Float2Short, Float2String, IMPLICIT_CONVERSION_MASK, Int2Byte, Int2Char, Int2Double, Int2Float, Int2Int, Int2Long, Int2Short, Int2String, Long2Byte, Long2Char, Long2Double, Long2Float, Long2Int, Long2Long, Long2Short, Long2String, NoId, Null2String, Object2Object, Object2String, Short2Byte, Short2Char, Short2Double, Short2Float, Short2Int, Short2Long, Short2Short, Short2String, String2String, T_any, T_boolean, T_byte, T_char, T_double, T_float, T_function, T_int, T_JavaIoException, T_JavaIoExternalizable, T_JavaIoObjectStreamException, T_JavaIoPrintStream, T_JavaIoSerializable, T_JavaLangAnnotationAnnotation, T_JavaLangAnnotationDocumented, T_JavaLangAnnotationElementType, T_JavaLangAnnotationInherited, T_JavaLangAnnotationRetention, T_JavaLangAnnotationRetentionPolicy, T_JavaLangAnnotationTarget, T_JavaLangAssertionError, T_JavaLangBoolean, T_JavaLangByte, T_JavaLangCharacter, T_JavaLangClass, T_JavaLangClassNotFoundException, T_JavaLangCloneable, T_JavaLangDeprecated, T_JavaLangDouble, T_JavaLangEnum, T_JavaLangError, T_JavaLangException, T_JavaLangFloat, T_JavaLangIllegalArgumentException, T_JavaLangInteger, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangReflectConstructor, T_JavaLangReflectField, T_JavaLangReflectMethod, 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
 
Fields inherited from interface org.eclipse.wst.jsdt.core.ast.IASTNode
ABSTRACT_FUNCTION_DECLARATION, ABSTRACT_VARIABLE_DECLARATION, ALLOCATION_EXPRESSION, AND_AND_EXPRESSION, ANNOTATION, ANNOTATION_FUNCTION_DECLARATION, ARGUMENT, ARRAY_ALLOCATION_EXPRESSION, ARRAY_INITIALIZER, ARRAY_QUALIFIED_TYPE_REFERENCE, ARRAY_REFERENCE, ARRAY_TYPE_REFERENCE, ASSERT_STATEMENT, ASSIGNMENT, AST_NODE, BINARY_EXPRESSION, BLOCK, BRANCH_STATEMENT, BREAK_STATEMENT, CASE_STATEMENT, CAST_EXPRESSION, 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, MARKER_ANNOTATION, MEMBER_VALUEPAIR, NAME_REFERENCE, NORMAL_ANNOTATION, NULL_LITERAL, NUMBER_LITERAL, 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_MEMBER_ANNOTATION, 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, WILDCARD, WITH_STATEMENT
 
Constructor Summary
InferredType(char[] className)
          Create a new inferred type
 
Method Summary
 InferredAttribute addAttribute(char[] name, IASTNode definer)
          Add a new inferred attribute to the inferred type
 InferredAttribute addAttribute(InferredAttribute newAttribute)
          Add an InferredAttribute to this inferred type.
 InferredMethod addMethod(char[] methodName, IFunctionDeclaration functionDeclaration, boolean isConstructor)
          Add a new method to the inferred 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
 char[] getName()
          Gets the name of the inferred type
 int getNameStart()
           
 char[] getSuperClassName()
          Get the superclass name of the inferred type
 boolean isArray()
           
 boolean isInferred()
           
 boolean isNamed()
           
 java.lang.StringBuffer print(int indent, java.lang.StringBuffer output)
           
 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 setNameStart(int start)
          Set the charactor position (in the source) of the type name
 void updatePositions(int start, int end)
           
 
Methods inherited from class org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode
checkInvocationArguments, concreteStatement, getASTType, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isTypeUseDeprecated, printAnnotations, printIndent, printModifiers, resolveDeprecatedAnnotations, sourceEnd, sourceStart, toString, traverse, traverse
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

methods

public java.util.ArrayList methods

attributes

public InferredAttribute[] attributes

numberAttributes

public int numberAttributes

superClass

public InferredType superClass

referenceClass

public InferredType referenceClass

binding

public org.eclipse.wst.jsdt.internal.compiler.lookup.SourceTypeBinding binding

isDefinition

public boolean isDefinition

scope

public org.eclipse.wst.jsdt.internal.compiler.lookup.ClassScope scope

isArray

public boolean isArray

isAnonymous

public boolean isAnonymous

isObjectLiteral

public boolean isObjectLiteral

inferenceProviderID

public java.lang.String inferenceProviderID

inferenceStyle

public java.lang.String inferenceStyle

OBJECT_NAME

public static final char[] OBJECT_NAME

OBJECT_LITERAL_NAME

public static final char[] OBJECT_LITERAL_NAME

ARRAY_NAME

public static final char[] ARRAY_NAME

GLOBAL_NAME

public static final char[] GLOBAL_NAME

userData

public java.lang.Object userData
Constructor Detail

InferredType

public InferredType(char[] className)
Create a new inferred type

Parameters:
className - inferred type name
Method Detail

getName

public char[] getName()
Gets the name of the inferred type

Returns:
the inferred type name

getSuperClassName

public char[] getSuperClassName()
Get the superclass name of the inferred type

Returns:
superclass name

addAttribute

public InferredAttribute addAttribute(char[] name,
                                      IASTNode definer)
Add a new inferred attribute to the inferred type

Parameters:
name - the attribute name
definer - the ASTNode which this attribute is inferred from
Returns:
a new InferredAttribute

addAttribute

public InferredAttribute addAttribute(InferredAttribute newAttribute)
Add an InferredAttribute to this inferred type.

Parameters:
newAttribute - the attribute to add.
Returns:

findAttribute

public InferredAttribute findAttribute(char[] name)
Find the inferred attribute with the given name

Parameters:
name - name of the attribute to find
Returns:
the found InferredAttribute, or null if not found

addMethod

public InferredMethod addMethod(char[] methodName,
                                IFunctionDeclaration functionDeclaration,
                                boolean isConstructor)
Add a new method to the inferred type

Parameters:
methodName - name of the method to add
functionDeclaration - the AST Node containing the method bode
isConstructor - true if it is a constructor
Returns:
a new inferred method

findMethod

public InferredMethod findMethod(char[] methodName,
                                 IFunctionDeclaration methodDeclaration)
Find an inferred method

Parameters:
methodName - name of the method to find
methodDeclaration - not used
Returns:
the found method, or null

resolveType

public 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)

dumpReference

public void dumpReference(java.lang.StringBuffer sb)

containsMethod

public boolean containsMethod(IAbstractFunctionDeclaration inMethod)

resolveSuperType

public org.eclipse.wst.jsdt.internal.compiler.lookup.ReferenceBinding resolveSuperType(org.eclipse.wst.jsdt.internal.compiler.lookup.ClassScope classScope)

isArray

public boolean isArray()

print

public java.lang.StringBuffer print(int indent,
                                    java.lang.StringBuffer output)
Specified by:
print in class org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode

isInferred

public boolean isInferred()
Overrides:
isInferred in class org.eclipse.wst.jsdt.internal.compiler.ast.ASTNode

updatePositions

public void updatePositions(int start,
                            int end)

declarationOf

public IAbstractFunctionDeclaration declarationOf(org.eclipse.wst.jsdt.internal.compiler.lookup.MethodBinding methodBinding)

isNamed

public boolean isNamed()

setNameStart

public void setNameStart(int start)
Set the charactor position (in the source) of the type name

Parameters:
start - type name position

getNameStart

public int getNameStart()