org.aspectj.org.eclipse.jdt.internal.compiler.ast
Interface Invocation

All Superinterfaces:
InvocationSite
All Known Implementing Classes:
AllocationExpression, CodeSnippetAllocationExpression, CodeSnippetMessageSend, CompletionOnExplicitConstructorCall, CompletionOnJavadocAllocationExpression, CompletionOnJavadocMessageSend, CompletionOnMessageSend, CompletionOnMessageSendName, CompletionOnQualifiedAllocationExpression, ExplicitConstructorCall, JavadocAllocationExpression, JavadocMessageSend, KnownMessageSend, MessageSend, Proceed, QualifiedAllocationExpression, SelectionOnExplicitConstructorCall, SelectionOnMessageSend, SelectionOnQualifiedAllocationExpression

public interface Invocation
extends InvocationSite

Abstraction for invocation AST nodes that can trigger


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite
InvocationSite.EmptyWithAstNode
 
Method Summary
 Expression[] arguments()
           
 MethodBinding binding(TypeBinding targetType, boolean reportErrors, Scope scope)
          Answer the resolved method binding of this invocation.
 InferenceContext18 getInferenceContext(ParameterizedMethodBinding method)
          Retrieve an inference context for the given method which must have been registered using registerInferenceContext(ParameterizedGenericMethodBinding, InferenceContext18).
 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 innersNeedUpdate()) has been done.
 void registerInferenceContext(ParameterizedGenericMethodBinding method, InferenceContext18 infCtx18)
          Register the given inference context, which produced the given method as its intermediate result.
 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 interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite
freshInferenceContext, genericTypeArguments, getExpressionContext, invocationTargetType, isSuperAccess, isTypeAccess, receiverIsImplicitThis, setActualReceiverType, setDepth, setFieldIndex, sourceEnd, sourceStart
 

Method Detail

arguments

Expression[] arguments()

binding

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

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

registerInferenceContext

void registerInferenceContext(ParameterizedGenericMethodBinding method,
                              InferenceContext18 infCtx18)
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.


getInferenceContext

InferenceContext18 getInferenceContext(ParameterizedMethodBinding method)
Retrieve an inference context for the given method which must have been registered using registerInferenceContext(ParameterizedGenericMethodBinding, InferenceContext18).

Parameters:
method - an intermediate resolved candidate for this invocation return a suspended inference context or null if none was registered for this method.

usesInference

boolean usesInference()
Answer true if this invocation has determined its binding using inference.


updateBindings

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. Note that potentially more than just the method binding is updated.

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

innersNeedUpdate

boolean innersNeedUpdate()
Answer whether the current invocation has inner expressions that still need updating after inference.


innerUpdateDone

void innerUpdateDone()
Mark that updating (the need for which is signaled via innersNeedUpdate()) has been done.


innerInferenceHelper

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.