Class MessageSend
java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode
org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement
org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression
org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend
- All Implemented Interfaces:
Invocation,IPolyExpression,InvocationSite,TypeConstants,TypeIds
- Direct Known Subclasses:
CodeSnippetMessageSend,CompletionOnMessageSend,CompletionOnMessageSendName,JavadocMessageSend,KnownMessageSend,Proceed,SelectionOnMessageSend
AspectJ Extension - support for MethodBinding.alwaysNeedsAccessMethod
Possible mergeconflict? Was InvocationSite but now Invocation in implements clause
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite
InvocationSite.EmptyWithAstNodeNested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
TypeConstants.BoundCheckStatus, TypeConstants.CloseMethodRecord, TypeConstants.DangerousMethod -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanbooleanlongchar[]Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression
constant, implicitConversion, NO_EXPRESSIONS, resolvedType, statementEndFields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement
COMPLAINED_FAKE_REACHABLE, COMPLAINED_UNREACHABLE, NOT_COMPLAINEDFields 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, BlockShouldEndDead, CanBeStatic, ContainsAssertion, DepthMASK, DepthSHIFT, DidResolve, DisableUnnecessaryCastCheck, DiscardEnclosingInstance, DocumentedCasesOmitted, DocumentedFallthrough, Empty, ErrorInSignature, FirstAssignmentToLocal, GenerateCheckcast, HasAbstractMethods, HasAllMethodBodies, HasBeenGenerated, HasBeenResolved, HasFunctionalInterfaceTypes, HasLocalType, HasSyntaxErrors, HasTypeAnnotations, IgnoreNoEffectAssignCheck, IgnoreRawTypeCheck, inModule, InsideExpressionStatement, InsideJavadoc, INVOCATION_ARGUMENT_OK, INVOCATION_ARGUMENT_UNCHECKED, INVOCATION_ARGUMENT_WILDCARD, IsAdditionalDeclarator, IsAnnotationDefaultValue, IsAnonymousType, IsAnyFinallyBlockEscaping, IsArgument, IsCanonicalConstructor, IsCapturedOuterLocal, IsCompoundAssigned, IsDefaultConstructor, IsDiamond, IsElseIfStatement, IsElseStatementUnreachable, IsFinallyBlockEscaping, IsForeachElementVariable, IsImplicit, IsImplicitThis, IsImplicitUnit, IsLocalDeclarationReachable, IsLocalType, IsMemberType, IsNonNull, IsReachable, IsRecovered, IsReturnedValue, IsSecondaryType, IsSecretYieldValueUsage, IsStrictlyAssigned, IsSynchronized, IsSynthetic, IsThenStatementUnreachable, IsTryBlockExiting, IsTypeElided, IsUnionType, IsUsedInPatternGuard, IsUsefulEmptyStatement, IsVarArgs, LabelUsed, NeededScope, NeedFreeReturn, NeedReceiverGenericCast, NO_ARGUMENTS, NO_RECORD_COMPONENTS, NO_TYPE_PATTERNS, NO_VARIABLES, OnDemand, OperatorMASK, OperatorSHIFT, OverridingMethodWithSupercall, ParenthesizedMASK, ParenthesizedSHIFT, ResolveJavadoc, RestrictiveFlagMASK, ReturnTypeIDMASK, ShadowsOuterLocal, sourceEnd, sourceStart, SuperAccess, ThenExit, Unchecked, UndocumentedEmptyBlock, UnnecessaryCast, UnsafeCast, UsedFields 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, API, ASSERT_CLASS, ASSERT_FALSE, ASSERT_NOTNULL, ASSERT_NULL, ASSERT_TRUE, ASSERTIONS_CLASS, AUTOMATIC_MODULE_NAME, AUTOWIRED, BASE, BEANS, BOOLEAN, BYTE, CAPTURE18, CHANNELS, 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, CharArray_JAVA_LANG_RECORD, CharArray_JAVA_LANG_RECORD_SLASH, 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, CONTAINS, CONTAINS_ALL, CONTAINS_KEY, CONTAINS_VALUE, 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, FACTORY, FILTER, FLOAT, FLUENT_RESOURCE_CLASSES, FOR_REMOVAL, FRAMEWORK, GET, GET_STATIC_FINAL, GET_STATIC_FINAL__SIGNATURE, GETCLASS, GOOGLE, GUAVA_CLOSEABLES, HASHCODE, IMPLEMENTS, INDEX_OF, INIT, INJECT_PACKAGE, INJECT_TYPE, INT, INTERNAL, INVOKE, IO, IS_INSTANCE, IS_NOTNULL, IS_NULL, IS_TRUE, ITYPEBINDING, JAKARTA, JAKARTA_ANNOTATION_INJECT_INJECT, JAVA, JAVA_BASE, JAVA_DOT_BASE, JAVA_IO, JAVA_IO_CLOSEABLE, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IO, 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, 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_CONSTANT_CLASSDESC, JAVA_LANG_DEPRECATED, JAVA_LANG_DOUBLE, JAVA_LANG_ENUM, JAVA_LANG_ENUM_ENUMDESC, JAVA_LANG_ERROR, JAVA_LANG_EXCEPTION, JAVA_LANG_FLOAT, JAVA_LANG_FUNCTIONAL_INTERFACE, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INCOMPATIBLECLASSCHANGEERROR, JAVA_LANG_INTEGER, JAVA_LANG_INVOKE_CONSTANTBOOTSTRAP, JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, JAVA_LANG_INVOKE_METHODHANDLE, JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLE_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLES, JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, JAVA_LANG_INVOKE_STRING_CONCAT_FACTORY, JAVA_LANG_INVOKE_VARHANDLE, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFFOUNDERROR, JAVA_LANG_NOSUCHFIELDERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_RECORD, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIME_OBJECTMETHODS, JAVA_LANG_RUNTIME_SWITCHBOOTSTRAPS, 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_ARRAYS, JAVA_UTIL_COLLECTION, JAVA_UTIL_ITERATOR, JAVA_UTIL_LIST, JAVA_UTIL_MAP, JAVA_UTIL_OBJECTS, JAVA_UTIL_STREAM, JAVA_UTIL_STREAM__STREAM, JAVA_UTIL_ZIP_WRAPPER_CLOSEABLES, JAVAC, JAVAX, JAVAX_ANNOTATION_INJECT_INJECT, JAVAX_RMI_CORBA_STUB, JDK, JDK_INTERNAL_JAVAC_PREVIEW_FEATURE, JDK_INTERNAL_PREVIEW_FEATURE, JDK_INTERNAL_VALUEBASED, JDT, JUNIT, JUNIT_FRAMEWORK_ASSERT, JUPITER, KEYWORD_EXTENDS, LAMBDA_TYPE, LANG, LANG3, LAST_INDEX_OF, LENGTH, LONG, LOOKUP, MAIN, META_INF_MANIFEST_MF, METHOD_SOURCE, MODULE_INFO_CLASS_NAME, MODULE_INFO_CLASS_NAME_STRING, MODULE_INFO_FILE_NAME, MODULE_INFO_FILE_NAME_STRING, MODULE_INFO_NAME, MODULE_INFO_NAME_STRING, NEXT, NIO, NON_NULL, NON_SEALED, NOT_NULL, NULL, OBJECT, ONE_UTIL_STREAMEX, 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, ORG_JUNIT_JUPITER_API_ASSERTIONS, ORG_JUNIT_METHOD_SOURCE, ORG_SPRING_AUTOWIRED, OTHER_WRAPPER_CLOSEABLES, PACKAGE_INFO_NAME, PARAMS, PERMITS, PRIMITIVE_CLASS, PRIMITIVE_CLASS__SIGNATURE, PROVIDER, READOBJECT, READRESOLVE, RECORD_CLASS, RECORD_RESTRICTED_IDENTIFIER, REFLECT, REMOVE, REMOVE_ALL, REQUIRE_NON_NULL, REQUIRED, RESOURCE_FREE_CLOSEABLE_J_U_STREAMS, RESOURCE_FREE_CLOSEABLE_STREAMEX, RETAIN_ALL, RUNTIME, SEALED, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SINCE, SPRING, STRING_CONCAT_MARKER_1, 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, TOSTRING, TYPE, TYPE_PARAMETER_TARGET, TYPE_USE_TARGET, TYPEBINDING, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_MODULE, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RECORD_COMPONENT, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALIDATE_CLASS, VALUE, VALUEOF, VALUES, VAR, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_CAPTURE_SIGNABLE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE, YIELD, ZIPFields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds
BitAnyNullAnnotation, BitAnyOwningAnnotation, BitAutoCloseable, BitCloseable, BitCollection, BitList, BitMap, BitNonNullAnnotation, BitNonNullByDefaultAnnotation, BitNotOwningAnnotation, BitNullableAnnotation, BitOwningAnnotation, 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_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_JavaLangNoClassDefFoundError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangRecord, 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_JavaUtilList, T_JavaUtilMap, T_JavaUtilObjects, T_JavaxInjectInject, T_JunitFrameworkAssert, T_LastWellKnownTypeId, T_long, T_null, T_OrgApacheCommonsLang3Validate, T_OrgApacheCommonsLangValidate, T_OrgEclipseCoreRuntimeAssert, T_OrgJunitAssert, T_OrgJunitJupiterApiAssertions, T_OrgJunitJupiterParamsProviderMethodSource, T_OrgSpringframeworkBeansFactoryAnnotationAutowired, T_short, T_undefined, T_void, UNBOXING -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionanalyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) binding()Answer the resolved method binding of this invocationbooleancheckNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) Check this expression against potential NPEs, which may occur: if the expression is the receiver in a field access, qualified allocation, array reference or message send incl.voidDiscard any state from type inference when compilation is done.voidcomputeConversion(Scope scope, TypeBinding runtimeTimeType, TypeBinding compileTimeType) Base types need that the widening is explicitly done by the compiler using some bytecode like i2f.protected TypeBindingfindMethodBinding(BlockScope scope) freshInferenceContext(Scope scope) When inference for this invocationSite starts, get a fresh inference context, initialized from this site.voidgenerateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) MessageSend code generationRetrieve an inference context for the given method.protected TypeBindinghandleNullnessCodePatterns(BlockScope scope, TypeBinding returnType) Implementation ofInvocationSite.invocationTargetType()suitable at this level.booleanisBoxingCompatibleWith(TypeBinding targetType, Scope scope) booleanisCompatibleWith(TypeBinding targetType, Scope scope) protected booleanbooleanbooleanisPolyExpression(MethodBinding resolutionCandidate) Variant of isPolyExpression() to be used during type inference, when a resolution candidate exists.booleanbooleanbooleanprotected booleanisUnnecessaryReceiverCast(BlockScope scope, TypeBinding uncastedReceiverType) voidmanageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) intintintnullStatus(FlowInfo flowInfo, FlowContext flowContext) postConversionType(Scope scope) Returns the type of the expression after required implicit conversions.printExpression(int indent, StringBuilder output) booleanvoidrecordFlowUpdateOnResult(LocalVariableBinding local, boolean nonNullIfTrue, boolean negatable) voidregisterInferenceContext(ParameterizedGenericMethodBinding method, InferenceContext18 infCtx18) Register the given inference context, which produced the given method as its intermediate result.voidregisterResult(TypeBinding targetType, MethodBinding method) Record result against target typeprotected voidresolveMethodBinding(BlockScope scope, TypeBinding[] argumentTypes) resolveType(BlockScope scope) Resolve the type of this expression in the context of a blockScopevoidsetActualReceiverType(ReferenceBinding receiverType) voidsetDepth(int depth) voidsetExpectedType(TypeBinding expectedType) Record the type expectation before this expression is typechecked.voidsetExpressionContext(ExpressionContext context) voidsetFieldIndex(int depth) booleansIsMoreSpecific(TypeBinding s, TypeBinding t, Scope scope) booleanvoidtraverse(ASTVisitor visitor, BlockScope blockScope) Traverse an expression in the context of a blockScopeprotected voidupdateFlowOnBooleanResult(FlowInfo flowInfo, boolean result) Back-propagation of flow info: before analysing a branch where a given condition is known to hold true/false respectively, ask the condition to contribute its information to the given flowInfo.Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression
analyseCode, buildStringForConcatation, checkCastTypesCompatibility, checkNPE, checkNPEbyUnboxing, checkUnsafeCast, computeNullStatus, forcedToBeRaw, generateCode, generateOptimizedBoolean, generateOptimizedStringConcatenation, generateOptimizedStringConcatenationCreation, getDirectBinding, getPolyExpressions, hasSideEffects, isCompactableOperation, isConstantValueOfTypeAssignableToType, isConstantValueRepresentable, isExactMethodReference, isFunctionalType, isPertinentToApplicability, isPotentiallyCompatibleWith, isTrulyExpression, isTypeReference, localVariableBinding, markAsNonNull, nullAnnotatedVariableBinding, optimizedBooleanConstant, optimizedNullComparisonConstant, print, printExpression, printStatement, resolve, resolveExpressionExpecting, resolveType, resolveTypeExpecting, resolveTypeExpectingWithBindings, resolveTypeWithBindings, tagAsNeedCheckCast, tagAsUnnecessaryCast, toTypeReference, traverseMethods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement
analyseArguments, bindingsWhenComplete, bindingsWhenFalse, bindingsWhenTrue, branchChainTo, breaksOut, checkAgainstNullTypeAnnotation, complainIfUnreachable, completesByContinue, containsPatternVariable, containsPatternVariable, continuesAtOuterLabel, doesNotCompleteNormally, enclosingSwitchExpression, expectedType, findConstructorBinding, generateArguments, isBoxingCompatible, isEmptyBlock, isKnowDeadCodePattern, isValidJavaStatement, resolveWithBindingsMethods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode
acceptPotentiallyCompatibleMethods, checkingPotentialCompatibility, checkInvocationArguments, concreteStatement, copyRecordComponentAnnotations, copySE8AnnotationsToType, getRelevantAnnotations, handleNonNullByDefault, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isType, isTypeUseDeprecated, isUnqualifiedSuper, printAnnotations, printIndent, printModifiers, resolveAnnotations, resolveAnnotations, resolveAnnotations, resolveDeprecatedAnnotations, resolvePolyExpressionArguments, resolveStatements, sourceEnd, sourceStart, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.ast.Invocation
handleResourcePassedToInvocationMethods inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite
acceptPotentiallyCompatibleMethods, checkingPotentialCompatibility, sourceEnd, sourceStartMethods inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.ast.IPolyExpression
expectedType, getPolyExpressions, isFunctionalType, isPertinentToApplicability, isPotentiallyCompatibleWith, resolveExpressionExpecting
-
Field Details
-
receiver
-
selector
public char[] selector -
arguments
-
binding
-
syntheticAccessor
-
expectedType
-
nameSourcePosition
public long nameSourcePosition -
actualReceiverType
-
valueCast
-
typeArguments
-
genericTypeArguments
-
expressionContext
-
argsContainCast
protected boolean argsContainCast -
argumentTypes
-
argumentsHaveErrors
public boolean argumentsHaveErrors -
closeTracker
-
-
Constructor Details
-
MessageSend
public MessageSend()
-
-
Method Details
-
analyseCode
- Overrides:
analyseCodein classExpression
-
recordFlowUpdateOnResult
public void recordFlowUpdateOnResult(LocalVariableBinding local, boolean nonNullIfTrue, boolean negatable) -
updateFlowOnBooleanResult
Description copied from class:ExpressionBack-propagation of flow info: before analysing a branch where a given condition is known to hold true/false respectively, ask the condition to contribute its information to the given flowInfo.- Overrides:
updateFlowOnBooleanResultin classExpression- Parameters:
flowInfo- the info to be used for analysing the branchresult- condition result that would cause entering the branch
-
checkNPE
public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) Description copied from class:ExpressionCheck this expression against potential NPEs, which may occur:- if the expression is the receiver in a field access, qualified allocation, array reference or message send incl. implicit message sends like it happens for the collection in a foreach statement.
- if the expression is subject to unboxing
- if the expression is the exception in a throw statement
- Overrides:
checkNPEin classExpression- Parameters:
scope- the scope of the analysisflowContext- the current flow contextflowInfo- the upstream flow info; caveat: may get modifiedttlForFieldCheck- if this is a reference to a field we will mark that field as nonnull for the specified timeToLive- Returns:
- could this expression be checked by the current implementation?
-
computeConversion
public void computeConversion(Scope scope, TypeBinding runtimeTimeType, TypeBinding compileTimeType) Description copied from class:ExpressionBase types need that the widening is explicitly done by the compiler using some bytecode like i2f. Also check unsafe type operations.- Overrides:
computeConversionin classExpression- Parameters:
scope- a scoperuntimeTimeType- this is the type required at runtimecompileTimeType- this is what the compiler knows about the provided value- See Also:
-
generateCode
MessageSend code generation- Overrides:
generateCodein classExpression- Parameters:
currentScope- org.eclipse.jdt.internal.compiler.lookup.BlockScopecodeStream- org.eclipse.jdt.internal.compiler.codegen.CodeStreamvalueRequired- boolean
-
genericTypeArguments
- Specified by:
genericTypeArgumentsin interfaceInvocationSite- See Also:
-
isSuperAccess
public boolean isSuperAccess()- Specified by:
isSuperAccessin interfaceInvocationSite
-
isTypeAccess
public boolean isTypeAccess()- Specified by:
isTypeAccessin interfaceInvocationSite
-
manageSyntheticAccessIfNecessary
-
nullStatus
- Overrides:
nullStatusin classExpression
-
postConversionType
Description copied from class:ExpressionReturns the type of the expression after required implicit conversions. When expression type gets promoted or inserted a generic cast, the converted type will differ from the resolved type (surface side-effects from #computeConversion(...)).- Overrides:
postConversionTypein classExpression- Returns:
- the type after implicit conversion
- See Also:
-
printExpression
- Specified by:
printExpressionin classExpression
-
resolveType
Description copied from class:ExpressionResolve the type of this expression in the context of a blockScope- Specified by:
resolveTypein interfaceIPolyExpression- Overrides:
resolveTypein classExpression- Returns:
- Return the actual type of this expression after resolution
-
isUnnecessaryReceiverCast
-
isMissingTypeRelevant
protected boolean isMissingTypeRelevant() -
handleNullnessCodePatterns
-
findMethodBinding
-
setActualReceiverType
- Specified by:
setActualReceiverTypein interfaceInvocationSite
-
setDepth
public void setDepth(int depth) - Specified by:
setDepthin interfaceInvocationSite
-
setExpectedType
Description copied from class:ExpressionRecord 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.- Specified by:
setExpectedTypein interfaceIPolyExpression- Overrides:
setExpectedTypein classExpression- Parameters:
expectedType- The type denoting an expectation in the context of an assignment conversion- See Also:
-
setExpressionContext
- Specified by:
setExpressionContextin interfaceIPolyExpression- Overrides:
setExpressionContextin classExpression
-
isPolyExpression
public boolean isPolyExpression()- Specified by:
isPolyExpressionin interfaceIPolyExpression- Overrides:
isPolyExpressionin classExpression
-
isBoxingCompatibleWith
- Specified by:
isBoxingCompatibleWithin interfaceIPolyExpression- Overrides:
isBoxingCompatibleWithin classExpression
-
isCompatibleWith
- Specified by:
isCompatibleWithin interfaceIPolyExpression- Overrides:
isCompatibleWithin classExpression
-
isPolyExpression
Variant of isPolyExpression() to be used during type inference, when a resolution candidate exists.- Specified by:
isPolyExpressionin interfaceIPolyExpression- Overrides:
isPolyExpressionin classExpression
-
sIsMoreSpecific
- Specified by:
sIsMoreSpecificin interfaceIPolyExpression- Overrides:
sIsMoreSpecificin classExpression
-
setFieldIndex
public void setFieldIndex(int depth) - Specified by:
setFieldIndexin interfaceInvocationSite
-
invocationTargetType
Description copied from class:StatementImplementation ofInvocationSite.invocationTargetType()suitable at this level. Subclasses should override as necessary.- Specified by:
invocationTargetTypein interfaceInvocationSite- Specified by:
invocationTargetTypein interfaceIPolyExpression- Overrides:
invocationTargetTypein classStatement- See Also:
-
traverse
Description copied from class:ExpressionTraverse an expression in the context of a blockScope- Overrides:
traversein classExpression
-
statementExpression
public boolean statementExpression()- Overrides:
statementExpressionin classExpression
-
receiverIsImplicitThis
public boolean receiverIsImplicitThis()- Specified by:
receiverIsImplicitThisin interfaceInvocationSite- Overrides:
receiverIsImplicitThisin classASTNode
-
binding
Description copied from interface:InvocationAnswer the resolved method binding of this invocation- Specified by:
bindingin interfaceInvocation
-
registerInferenceContext
public void registerInferenceContext(ParameterizedGenericMethodBinding method, InferenceContext18 infCtx18) Description copied from interface:InvocationRegister 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 usingInvocation.getInferenceContext(ParameterizedMethodBinding)to continue the type inference.- Specified by:
registerInferenceContextin interfaceInvocation
-
registerResult
Description copied from interface:InvocationRecord result against target type- Specified by:
registerResultin interfaceInvocation
-
getInferenceContext
Description copied from interface:InvocationRetrieve an inference context for the given method.- Specified by:
getInferenceContextin interfaceInvocation- Parameters:
method- an intermediate resolved candidate for this invocation return the associated inference context.
-
cleanUpInferenceContexts
public void cleanUpInferenceContexts()Description copied from interface:InvocationDiscard any state from type inference when compilation is done.- Specified by:
cleanUpInferenceContextsin interfaceInvocation
-
arguments
- Specified by:
argumentsin interfaceInvocation
-
getExpressionContext
- Specified by:
getExpressionContextin interfaceInvocationSite- Specified by:
getExpressionContextin interfaceIPolyExpression- Overrides:
getExpressionContextin classStatement
-
freshInferenceContext
Description copied from interface:InvocationSiteWhen inference for this invocationSite starts, get a fresh inference context, initialized from this site.- Specified by:
freshInferenceContextin interfaceInvocationSite
-
isQualifiedSuper
public boolean isQualifiedSuper()- Specified by:
isQualifiedSuperin interfaceInvocationSite- Overrides:
isQualifiedSuperin classASTNode
-
nameSourceStart
public int nameSourceStart()- Specified by:
nameSourceStartin interfaceInvocationSite
-
nameSourceEnd
public int nameSourceEnd()- Specified by:
nameSourceEndin interfaceInvocationSite
-
resolveMethodBinding
-