org.aspectj.org.eclipse.jdt.internal.compiler.ast
Class AllocationExpression

java.lang.Object
  extended by org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode
      extended by org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement
          extended by org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression
              extended by org.aspectj.org.eclipse.jdt.internal.compiler.ast.AllocationExpression
All Implemented Interfaces:
Invocation, InvocationSite, TypeConstants, TypeIds
Direct Known Subclasses:
CodeSnippetAllocationExpression, JavadocAllocationExpression, QualifiedAllocationExpression

public class AllocationExpression
extends Expression
implements Invocation


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite
InvocationSite.EmptyWithAstNode
 
Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
TypeConstants.CloseMethodRecord
 
Field Summary
 Expression[] arguments
           
 MethodBinding binding
           
 FakedTrackingVariable closeTracker
           
 FieldDeclaration enumConstant
           
 TypeBinding[] genericTypeArguments
           
 boolean inferredReturnType
           
protected  InnerInferenceHelper innerInferenceHelper
           
 TypeReference type
           
 TypeReference[] typeArguments
           
protected  TypeBinding typeExpected
           
 
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression
constant, implicitConversion, resolvedType, statementEnd
 
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement
COMPLAINED_FAKE_REACHABLE, COMPLAINED_UNREACHABLE, NOT_COMPLAINED
 
Fields inherited from class org.aspectj.org.eclipse.jdt.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, CanBeStatic, ContainsAssertion, DepthMASK, DepthSHIFT, DidResolve, DisableUnnecessaryCastCheck, DiscardEnclosingInstance, DocumentedCasesOmitted, DocumentedFallthrough, Empty, ErrorInSignature, FirstAssignmentToLocal, GenerateCheckcast, HasAbstractMethods, HasAllMethodBodies, HasBeenGenerated, HasBeenResolved, HasFunctionalInterfaceTypes, HasLocalType, HasSyntaxErrors, HasTypeAnnotations, IgnoreNoEffectAssignCheck, IgnoreRawTypeCheck, InsideExpressionStatement, InsideJavadoc, INVOCATION_ARGUMENT_OK, INVOCATION_ARGUMENT_UNCHECKED, INVOCATION_ARGUMENT_WILDCARD, IsAnnotationDefaultValue, IsAnonymousType, IsAnySubRoutineEscaping, IsArgument, IsCapturedOuterLocal, IsCompoundAssigned, IsDefaultConstructor, IsDiamond, IsElseIfStatement, IsElseStatementUnreachable, IsForeachElementVariable, IsImplicitThis, IsImplicitUnit, IsLocalDeclarationReachable, IsLocalType, IsMemberType, IsNonNull, IsReachable, IsRecovered, IsReturnedValue, IsSecondaryType, IsStrictlyAssigned, IsSubRoutineEscaping, IsSuperType, IsSynchronized, IsSynthetic, IsThenStatementUnreachable, IsTryBlockExiting, IsTypeElided, IsUnionType, IsUsefulEmptyStatement, IsVarArgs, LabelUsed, NeededScope, NeedFreeReturn, NeedReceiverGenericCast, NO_ARGUMENTS, OnDemand, OperatorMASK, OperatorSHIFT, OverridingMethodWithSupercall, ParenthesizedMASK, ParenthesizedSHIFT, ResolveJavadoc, RestrictiveFlagMASK, ReturnTypeIDMASK, ShadowsOuterLocal, sourceEnd, sourceStart, SuperAccess, ThenExit, Unchecked, UndocumentedEmptyBlock, UnnecessaryCast, UnsafeCast, Used
 
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, ANONYMOUS_METHOD, APACHE, APACHE_DBUTILS, APACHE_IOUTILS, ASSERT_CLASS, ASSERT_FALSE, ASSERT_NOTNULL, ASSERT_NULL, ASSERT_TRUE, BOOLEAN, BYTE, CAPTURE18, 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, CHECK_ARGUMENT, CHECK_NOT_NULL, CHECK_STATE, CLINIT, CLONE, CLOSE, CLOSE_QUIETLY, closeMethods, COM, COM_GOOGLE_COMMON_BASE_PRECONDITIONS, COM_GOOGLE_INJECT_INJECT, COMMONS, COMPILER, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, CORE, DEFAULT_LOCATION__ARRAY_CONTENTS, DEFAULT_LOCATION__FIELD, DEFAULT_LOCATION__PARAMETER, DEFAULT_LOCATION__RETURN_TYPE, DEFAULT_LOCATION__TYPE_ARGUMENT, DEFAULT_LOCATION__TYPE_BOUND, DEFAULT_LOCATION__TYPE_PARAMETER, DESERIALIZE_LAMBDA, DOM, DOUBLE, ECLIPSE, EQUALS, FLOAT, FRAMEWORK, GETCLASS, GOOGLE, GUAVA_CLOSEABLES, HASHCODE, INIT, INJECT_PACKAGE, INJECT_TYPE, INT, INTERNAL, INVOKE, IO, IS_NOTNULL, IS_TRUE, ITYPEBINDING, JAVA, JAVA_IO, JAVA_IO_CLOSEABLE, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_RESOURCE_FREE_CLOSEABLES, JAVA_IO_SERIALIZABLE, JAVA_IO_WRAPPER_CLOSEABLES, JAVA_LANG, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_REPEATABLE, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_AUTOCLOSEABLE, 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_FUNCTIONAL_INTERFACE, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLE_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLES, JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, 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_SAFEVARARGS, 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_NIO_FILE_FILES, JAVA_UTIL_COLLECTION, JAVA_UTIL_ITERATOR, JAVA_UTIL_OBJECTS, JAVA_UTIL_ZIP_WRAPPER_CLOSEABLES, JAVAX, JAVAX_ANNOTATION_INJECT_INJECT, JAVAX_RMI_CORBA_STUB, JDT, JUNIT, JUNIT_FRAMEWORK_ASSERT, LAMBDA_TYPE, LANG, LANG3, LENGTH, LONG, LOOKUP, MAIN, MISMATCH, NOT_NULL, NULL, OBJECT, OK, OPTIONAL, ORG, ORG_APACHE_COMMONS_LANG_VALIDATE, ORG_APACHE_COMMONS_LANG3_VALIDATE, ORG_ECLIPSE_CORE_RUNTIME_ASSERT, ORG_ECLIPSE_JDT_CORE_DOM_ITYPEBINDING, ORG_ECLIPSE_JDT_INTERNAL_COMPILER_LOOKUP_TYPEBINDING, ORG_JUNIT_ASSERT, OTHER_WRAPPER_CLOSEABLES, PACKAGE_INFO_NAME, READOBJECT, READRESOLVE, REFLECT, REQUIRE_NON_NULL, RESOURCE_FREE_CLOSEABLE_STREAM, RUNTIME, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_CONSTANT_INITIALIZATION_METHOD_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_STATIC_FACTORY, SYNTHETIC_SWITCH_ENUM_TABLE, TYPE, TYPE_PARAMETER_TARGET, TYPE_USE_TARGET, TYPEBINDING, UNCHECKED, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALIDATE_CLASS, 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, ZIP
 
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds
BitAutoCloseable, BitCloseable, BitResourceFreeCloseable, BitUninitialized, BitUninternedType, BitWrapperCloseable, 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, InheritableBits, Int2Byte, Int2Char, Int2Double, Int2Float, Int2Int, Int2Long, Int2Short, Int2String, Long2Byte, Long2Char, Long2Double, Long2Float, Long2Int, Long2Long, Long2Short, Long2String, NoId, Null2Null, Null2String, Object2boolean, Object2byte, Object2char, Object2double, Object2float, Object2int, Object2long, Object2Object, Object2short, Object2String, Short2Byte, Short2Char, Short2Double, Short2Float, Short2Int, Short2Long, Short2Short, Short2String, String2String, T_boolean, T_byte, T_char, T_ComGoogleCommonBasePreconditions, T_ComGoogleInjectInject, T_ConfiguredAnnotationNonNull, T_ConfiguredAnnotationNonNullByDefault, T_ConfiguredAnnotationNullable, T_double, T_float, T_int, T_JavaIoException, T_JavaIoExternalizable, T_JavaIoObjectStreamException, T_JavaIoPrintStream, T_JavaIoSerializable, T_JavaLangAnnotationAnnotation, T_JavaLangAnnotationDocumented, T_JavaLangAnnotationElementType, T_JavaLangAnnotationInherited, T_JavaLangAnnotationRepeatable, T_JavaLangAnnotationRetention, T_JavaLangAnnotationRetentionPolicy, T_JavaLangAnnotationTarget, T_JavaLangAssertionError, T_JavaLangAutoCloseable, 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_JavaLangFunctionalInterface, T_JavaLangIllegalArgumentException, T_JavaLangInteger, T_JavaLangInvokeMethodHandlePolymorphicSignature, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangReflectConstructor, T_JavaLangReflectField, T_JavaLangReflectMethod, T_JavaLangRuntimeException, T_JavaLangSafeVarargs, T_JavaLangShort, T_JavaLangString, T_JavaLangStringBuffer, T_JavaLangStringBuilder, T_JavaLangSuppressWarnings, T_JavaLangSystem, T_JavaLangThrowable, T_JavaLangVoid, T_JavaUtilCollection, T_JavaUtilIterator, T_JavaUtilObjects, T_JavaxInjectInject, T_JunitFrameworkAssert, T_LastWellKnownTypeId, T_long, T_null, T_OrgApacheCommonsLang3Validate, T_OrgApacheCommonsLangValidate, T_OrgEclipseCoreRuntimeAssert, T_OrgJunitAssert, T_short, T_undefined, T_void, UNBOXING
 
Constructor Summary
AllocationExpression()
           
 
Method Summary
 FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo)
           
 Expression[] arguments()
           
 MethodBinding binding(TypeBinding targetType, boolean reportErrors, Scope scope)
          Answer the resolved method binding of this invocation.
 TypeBinding checkAgainstFinalTargetType(TypeBinding targetType, Scope scope)
          Once outer contexts have finalized the target type for this expression, perform any checks that might have been delayed previously.
 void checkCapturedLocalInitializationIfNecessary(ReferenceBinding checkedType, BlockScope currentScope, FlowInfo flowInfo)
           
 void checkTypeArgumentRedundancy(ParameterizedTypeBinding allocationType, ReferenceBinding enclosingType, TypeBinding[] argumentTypes, BlockScope scope)
           
 Expression enclosingInstance()
           
 InferenceContext18 freshInferenceContext(Scope scope)
          When inference for this invocationSite starts, get a fresh inference context, initialized from this site.
 void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired)
          Every expression is responsible for generating its implicit conversion when necessary.
 TypeBinding[] genericTypeArguments()
           
 ExpressionContext getExpressionContext()
           
 InferenceContext18 getInferenceContext(ParameterizedMethodBinding method)
          Retrieve an inference context for the given method which must have been registered using Invocation.registerInferenceContext(ParameterizedGenericMethodBinding, InferenceContext18).
 TypeBinding[] inferElidedTypes(ParameterizedTypeBinding allocationType, ReferenceBinding enclosingType, TypeBinding[] argumentTypes, BlockScope scope)
           
 InnerInferenceHelper innerInferenceHelper()
          If this invocation has any poly expressions as arguments, this method answers an inference helper that mediates during overload resolution, even if no actual inference happens for this invocation.
 boolean innersNeedUpdate()
          Answer whether the current invocation has inner expressions that still need updating after inference.
 void innerUpdateDone()
          Mark that updating (the need for which is signaled via Invocation.innersNeedUpdate()) has been done.
 TypeBinding invocationTargetType()
          Implementation of InvocationSite.invocationTargetType() suitable at this level.
 boolean isPolyExpression()
           
 boolean isPolyExpression(MethodBinding method)
          Variant of isPolyExpression() to be used during type inference, when a resolution candidate exists.
 boolean isSuperAccess()
           
 boolean isTypeAccess()
           
 void manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo)
           
 void manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo)
           
 java.lang.StringBuffer printExpression(int indent, java.lang.StringBuffer output)
           
 void registerInferenceContext(ParameterizedGenericMethodBinding method, InferenceContext18 infCtx18)
          Register the given inference context, which produced the given method as its intermediate result.
 TypeBinding resolveType(BlockScope scope)
          Resolve the type of this expression in the context of a blockScope
 void setActualReceiverType(ReferenceBinding receiverType)
           
 void setDepth(int i)
           
 void setExpectedType(TypeBinding expectedType)
          Record the type expectation before this expression is typechecked.
 void setExpressionContext(ExpressionContext context)
           
 void setFieldIndex(int i)
           
 boolean statementExpression()
           
 void traverse(ASTVisitor visitor, BlockScope scope)
          Traverse an expression in the context of a blockScope
 boolean updateBindings(MethodBinding updatedBinding, TypeBinding targetType)
          Where the AST node may hold references to the results of Invocation Applicability Inference, this method allows to update those references to the result of Invocation Type Inference.
 boolean usesInference()
          Answer true if this invocation has determined its binding using inference.
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression
analyseCode, checkCastTypesCompatibility, checkNPE, checkNPEbyUnboxing, checkUnsafeCast, computeConversion, forcedToBeRaw, generateCode, generateOptimizedBoolean, generateOptimizedStringConcatenation, generateOptimizedStringConcatenationCreation, getDirectBinding, isAssignmentCompatible, isBoxingCompatibleWith, isCompactableOperation, isCompatibleWith, isConstantValueOfTypeAssignableToType, isConstantValueRepresentable, isExactMethodReference, isPertinentToApplicability, isTypeReference, localVariableBinding, markAsNonNull, nullAnnotatedVariableBinding, nullStatus, optimizedBooleanConstant, postConversionType, print, printStatement, resolve, resolveType, resolveTypeExpecting, reusableJSRTarget, sIsMoreSpecific, tagAsEllipsisArgument, tagAsNeedCheckCast, tagAsUnnecessaryCast, toTypeReference, traverse
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement
analyseArguments, branchChainTo, checkAgainstNullTypeAnnotation, complainIfUnreachable, expectedType, findConstructorBinding, generateArguments, isBoxingCompatible, isEmptyBlock, isKnowDeadCodePattern, isValidJavaStatement, recordExceptionsForEnclosingLambda, resolveCase
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode
checkInvocationArguments, concreteStatement, copySE8AnnotationsToType, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isTypeUseDeprecated, isUnqualifiedSuper, printAnnotations, printIndent, printModifiers, receiverIsImplicitThis, resolveAnnotations, resolveAnnotations, resolveAnnotations, resolveDeprecatedAnnotations, resolvePolyExpressionArguments, resolvePolyExpressionArguments, sourceEnd, sourceStart, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite
receiverIsImplicitThis, sourceEnd, sourceStart
 

Field Detail

type

public TypeReference type

arguments

public Expression[] arguments

binding

public MethodBinding binding

typeArguments

public TypeReference[] typeArguments

genericTypeArguments

public TypeBinding[] genericTypeArguments

enumConstant

public FieldDeclaration enumConstant

typeExpected

protected TypeBinding typeExpected

inferredReturnType

public boolean inferredReturnType

closeTracker

public FakedTrackingVariable closeTracker

innerInferenceHelper

protected InnerInferenceHelper innerInferenceHelper
Constructor Detail

AllocationExpression

public AllocationExpression()
Method Detail

analyseCode

public FlowInfo analyseCode(BlockScope currentScope,
                            FlowContext flowContext,
                            FlowInfo flowInfo)
Overrides:
analyseCode in class Expression

checkCapturedLocalInitializationIfNecessary

public void checkCapturedLocalInitializationIfNecessary(ReferenceBinding checkedType,
                                                        BlockScope currentScope,
                                                        FlowInfo flowInfo)

enclosingInstance

public Expression enclosingInstance()

generateCode

public void generateCode(BlockScope currentScope,
                         CodeStream codeStream,
                         boolean valueRequired)
Description copied from class: Expression
Every expression is responsible for generating its implicit conversion when necessary.

Overrides:
generateCode in class Expression
Parameters:
currentScope - org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
codeStream - org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
valueRequired - boolean

genericTypeArguments

public TypeBinding[] genericTypeArguments()
Specified by:
genericTypeArguments in interface InvocationSite
See Also:
InvocationSite.genericTypeArguments()

isSuperAccess

public boolean isSuperAccess()
Specified by:
isSuperAccess in interface InvocationSite

isTypeAccess

public boolean isTypeAccess()
Specified by:
isTypeAccess in interface InvocationSite

manageEnclosingInstanceAccessIfNecessary

public void manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope,
                                                     FlowInfo flowInfo)

manageSyntheticAccessIfNecessary

public void manageSyntheticAccessIfNecessary(BlockScope currentScope,
                                             FlowInfo flowInfo)

printExpression

public java.lang.StringBuffer printExpression(int indent,
                                              java.lang.StringBuffer output)
Specified by:
printExpression in class Expression

resolveType

public TypeBinding resolveType(BlockScope scope)
Description copied from class: Expression
Resolve the type of this expression in the context of a blockScope

Overrides:
resolveType in class Expression
Returns:
Return the actual type of this expression after resolution

inferElidedTypes

public TypeBinding[] inferElidedTypes(ParameterizedTypeBinding allocationType,
                                      ReferenceBinding enclosingType,
                                      TypeBinding[] argumentTypes,
                                      BlockScope scope)

checkTypeArgumentRedundancy

public void checkTypeArgumentRedundancy(ParameterizedTypeBinding allocationType,
                                        ReferenceBinding enclosingType,
                                        TypeBinding[] argumentTypes,
                                        BlockScope scope)

setActualReceiverType

public void setActualReceiverType(ReferenceBinding receiverType)
Specified by:
setActualReceiverType in interface InvocationSite

setDepth

public void setDepth(int i)
Specified by:
setDepth in interface InvocationSite

setFieldIndex

public void setFieldIndex(int i)
Specified by:
setFieldIndex in interface InvocationSite

traverse

public void traverse(ASTVisitor visitor,
                     BlockScope scope)
Description copied from class: Expression
Traverse an expression in the context of a blockScope

Overrides:
traverse in class Expression

setExpectedType

public void setExpectedType(TypeBinding expectedType)
Description copied from class: Expression
Record the type expectation before this expression is typechecked. e.g. String s = foo();, foo() will be tagged as being expected of type String Used to trigger proper inference of generic method invocations.

Overrides:
setExpectedType in class Expression
Parameters:
expectedType - The type denoting an expectation in the context of an assignment conversion
See Also:
Expression.setExpectedType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)

setExpressionContext

public void setExpressionContext(ExpressionContext context)
Overrides:
setExpressionContext in class Expression

isPolyExpression

public boolean isPolyExpression()
Overrides:
isPolyExpression in class Expression

isPolyExpression

public boolean isPolyExpression(MethodBinding method)
Description copied from class: Expression
Variant of isPolyExpression() to be used during type inference, when a resolution candidate exists.

Overrides:
isPolyExpression in class Expression

invocationTargetType

public TypeBinding invocationTargetType()
Description copied from class: Statement
Implementation of InvocationSite.invocationTargetType() suitable at this level. Subclasses should override as necessary.

Specified by:
invocationTargetType in interface InvocationSite
Overrides:
invocationTargetType in class Statement
See Also:
InvocationSite.invocationTargetType()

statementExpression

public boolean statementExpression()
Overrides:
statementExpression in class Expression

binding

public MethodBinding binding(TypeBinding targetType,
                             boolean reportErrors,
                             Scope scope)
Description copied from interface: Invocation
Answer the resolved method binding of this invocation. If a target type is given, the invocation gets a chance to do repeated method lookup.

Specified by:
binding in interface Invocation
Parameters:
targetType - the target type of this invocation or null if not yet known
reportErrors - if true then this is the last call, if no valid binding can be answered we should report an error
scope - if reportErrors is true then this scope can be used for error reporting

checkAgainstFinalTargetType

public TypeBinding checkAgainstFinalTargetType(TypeBinding targetType,
                                               Scope scope)
Description copied from class: Expression
Once outer contexts have finalized the target type for this expression, perform any checks that might have been delayed previously.

Overrides:
checkAgainstFinalTargetType in class Expression
Parameters:
targetType - the final target type (aka expectedType) for this expression.
scope - scope for error reporting

arguments

public Expression[] arguments()
Specified by:
arguments in interface Invocation

updateBindings

public boolean updateBindings(MethodBinding updatedBinding,
                              TypeBinding targetType)
Description copied from interface: Invocation
Where the AST node may hold references to the results of Invocation Applicability Inference, this method allows to update those references to the result of Invocation Type Inference. Note that potentially more than just the method binding is updated.

Specified by:
updateBindings in interface Invocation
Parameters:
updatedBinding - the final method binding after full inference
targetType - the target type used during Invocation Type Inference
Returns:
true if an update has happened

registerInferenceContext

public void registerInferenceContext(ParameterizedGenericMethodBinding method,
                                     InferenceContext18 infCtx18)
Description copied from interface: Invocation
Register the given inference context, which produced the given method as its intermediate result. Later when the same method is selected as the most specific method, the inference context for this pair (Invocation x MethodBinding) can be looked up using InvocationSite.getExpressionContext() to continue the type inference.

Specified by:
registerInferenceContext in interface Invocation

usesInference

public boolean usesInference()
Description copied from interface: Invocation
Answer true if this invocation has determined its binding using inference.

Specified by:
usesInference in interface Invocation

getInferenceContext

public InferenceContext18 getInferenceContext(ParameterizedMethodBinding method)
Description copied from interface: Invocation
Retrieve an inference context for the given method which must have been registered using Invocation.registerInferenceContext(ParameterizedGenericMethodBinding, InferenceContext18).

Specified by:
getInferenceContext in interface Invocation
Parameters:
method - an intermediate resolved candidate for this invocation return a suspended inference context or null if none was registered for this method.

innersNeedUpdate

public boolean innersNeedUpdate()
Description copied from interface: Invocation
Answer whether the current invocation has inner expressions that still need updating after inference.

Specified by:
innersNeedUpdate in interface Invocation

innerUpdateDone

public void innerUpdateDone()
Description copied from interface: Invocation
Mark that updating (the need for which is signaled via Invocation.innersNeedUpdate()) has been done.

Specified by:
innerUpdateDone in interface Invocation

innerInferenceHelper

public InnerInferenceHelper innerInferenceHelper()
Description copied from interface: Invocation
If this invocation has any poly expressions as arguments, this method answers an inference helper that mediates during overload resolution, even if no actual inference happens for this invocation.

Specified by:
innerInferenceHelper in interface Invocation

getExpressionContext

public ExpressionContext getExpressionContext()
Specified by:
getExpressionContext in interface InvocationSite
Overrides:
getExpressionContext in class Statement

freshInferenceContext

public InferenceContext18 freshInferenceContext(Scope scope)
Description copied from interface: InvocationSite
When inference for this invocationSite starts, get a fresh inference context, initialized from this site.

Specified by:
freshInferenceContext in interface InvocationSite