|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedGenericMethodBinding
public class ParameterizedGenericMethodBinding
Binding denoting a generic method after type parameter substitutions got performed. On parameterized type bindings, all methods got substituted, regardless whether their signature did involve generics or not, so as to get the proper declaringClass for these methods.
| Field Summary | |
|---|---|
boolean |
inferredReturnType
|
boolean |
isRaw
|
TypeBinding[] |
typeArguments
|
boolean |
wasInferred
|
| Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding |
|---|
originalMethod |
| Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding |
|---|
declaringClass, defaultNullness, modifiers, parameterNames, parameterNonNullness, parameters, receiver, returnType, selector, tagBits, thrownExceptions, typeVariables |
| Constructor Summary | |
|---|---|
ParameterizedGenericMethodBinding(MethodBinding originalMethod,
RawTypeBinding rawType,
LookupEnvironment environment)
Create raw generic method for raw type (double substitution from type vars with raw type arguments, and erasure of method variables) Only invoked for non-static generic methods of raw type |
|
ParameterizedGenericMethodBinding(MethodBinding originalMethod,
TypeBinding[] typeArguments,
LookupEnvironment environment)
Create method of parameterized type, substituting original parameters with type arguments. |
|
| Method Summary | |
|---|---|
boolean |
alwaysNeedsAccessMethod()
Subtypes can override this to return true if an access method should be used when referring to this method binding. |
static MethodBinding |
computeCompatibleMethod(MethodBinding originalMethod,
TypeBinding[] arguments,
Scope scope,
InvocationSite invocationSite,
int inferenceLevel)
Perform inference of generic method type parameters and/or expected type |
char[] |
computeUniqueKey(boolean isLeaf)
|
LookupEnvironment |
environment()
Returns the lookup environment |
MethodBinding |
genericMethod()
|
MethodBinding |
getAccessMethod(boolean staticReference)
This will only be called if alwaysNeedsAccessMethod() returns true. |
boolean |
hasSubstitutedParameters()
Returns true if some parameters got substituted. |
boolean |
hasSubstitutedReturnType()
Returns true if the return type got substituted. |
boolean |
isRawSubstitution()
Returns true for raw substitution |
TypeBinding |
substitute(TypeVariableBinding originalVariable)
Returns the type substitute for a given type variable, or itself if no substitution got performed. |
MethodBinding |
tiebreakMethod()
Returns the method to use during tiebreak (usually the method itself). |
| Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding |
|---|
canBeSeenBy, instantiateGetClass, original, shallowOriginal, sourceMethod |
| Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding |
|---|
computeUniqueKey, initializeDeprecatedAnnotationTagBits, isAnnotationType, isParameter, isTaggedRepeatable, isValidBinding, isVolatile, problemId, setAnnotations |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public TypeBinding[] typeArguments
public boolean inferredReturnType
public boolean wasInferred
public boolean isRaw
| Constructor Detail |
|---|
public ParameterizedGenericMethodBinding(MethodBinding originalMethod,
RawTypeBinding rawType,
LookupEnvironment environment)
public ParameterizedGenericMethodBinding(MethodBinding originalMethod,
TypeBinding[] typeArguments,
LookupEnvironment environment)
| Method Detail |
|---|
public static MethodBinding computeCompatibleMethod(MethodBinding originalMethod,
TypeBinding[] arguments,
Scope scope,
InvocationSite invocationSite,
int inferenceLevel)
In 1.8+ the following discipline has to be observed by callers: Each invocation must be subjected to two levels of inference:
Invocation Applicability Inference, which may be applied
multiple times for the same invocationInvocation Type Inference, which is finally performed
for the selected method and which adds information from the "target type".Clients can control which parts of the inference should be performed by passing the appropriate flags into argument 'inferenceLevel'. On each call path it must be ensured that one or more invocation applicability inferences are always followed by exactly one invocation type inference (unless errors have been detected).
Initial clients are the direct callers of
Scope.computeCompatibleMethod(MethodBinding,TypeBinding[],InvocationSite,int),
which should either invoke both levels of inference or delegate the second part to
Scope.mostSpecificMethodBinding(MethodBinding[],int,TypeBinding[],InvocationSite,ReferenceBinding),
which is intended to ensure completing the inference on all non-error exits.
public char[] computeUniqueKey(boolean isLeaf)
computeUniqueKey in class MethodBindingpublic LookupEnvironment environment()
Substitution
environment in interface SubstitutionSubstitution.environment()public boolean hasSubstitutedParameters()
hasSubstitutedParameters in class ParameterizedMethodBindingpublic boolean hasSubstitutedReturnType()
hasSubstitutedReturnType in class ParameterizedMethodBindingpublic boolean isRawSubstitution()
Substitution
isRawSubstitution in interface SubstitutionSubstitution.isRawSubstitution()public TypeBinding substitute(TypeVariableBinding originalVariable)
Substitution
substitute in interface SubstitutionSubstitution.substitute(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding)public MethodBinding tiebreakMethod()
MethodBinding
tiebreakMethod in class MethodBindingMethodBinding.tiebreakMethod()public MethodBinding genericMethod()
genericMethod in class MethodBindingpublic boolean alwaysNeedsAccessMethod()
MethodBinding
alwaysNeedsAccessMethod in class ParameterizedMethodBindingpublic MethodBinding getAccessMethod(boolean staticReference)
MethodBinding
getAccessMethod in class ParameterizedMethodBinding
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||