Class WildcardBinding
java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.WildcardBinding
-
Field Summary
Modifier and TypeFieldDescriptionint
int
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
compoundName, fPackage, LUB_GENERIC, modifiers, samProblemBinding, singleAbstractMethod, sourceName
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding
BOOLEAN, BYTE, CHAR, DOUBLE, extendedTagBits, FLOAT, id, INT, LONG, NULL, SHORT, tagBits, TYPE_USE_BINDING, typeAnnotations, VOID
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding
ANY_EXCEPTION, ARRAY_TYPE, BASE_TYPE, DefaultLocationArrayContents, DefaultLocationField, DefaultLocationParameter, DefaultLocationReturnType, DefaultLocationsForTrueValue, DefaultLocationTypeArgument, DefaultLocationTypeBound, DefaultLocationTypeParameter, FIELD, GENERIC_TYPE, IMPORT, INTERSECTION_TYPE, INTERSECTION_TYPE18, LOCAL, METHOD, MODULE, NO_ANNOTATIONS, NO_COMPONENTS, NO_ELEMENT_VALUE_PAIRS, NO_EXCEPTIONS, NO_FIELDS, NO_MEMBER_TYPES, NO_METHODS, NO_MODULES, NO_NULL_DEFAULT, NO_PACKAGES, NO_PARAMETER_NAMES, NO_PARAMETERS, NO_PERMITTEDTYPES, NO_PLAIN_PACKAGES, NO_REFERENCE_TYPES, NO_SUPERINTERFACES, NO_TYPE_VARIABLES, NO_TYPES, NULL_UNSPECIFIED_BY_DEFAULT, NullnessDefaultMASK, PACKAGE, PARAMETERIZED_TYPE, PATTERN, POLY_TYPE, RAW_TYPE, RECORD_COMPONENT, TYPE, TYPE_PARAMETER, TYPE_USE, UNINITIALIZED_COMPONENTS, UNINITIALIZED_FIELDS, UNINITIALIZED_METHODS, UNINITIALIZED_REFERENCE_TYPES, VARIABLE, WILDCARD_TYPE
-
Constructor Summary
ConstructorDescriptionWildcardBinding(ReferenceBinding genericType, int rank, TypeBinding bound, TypeBinding[] otherBounds, int boundKind, LookupEnvironment environment)
When unbound, the bound denotes the corresponding type variable (so as to retrieve its bound lazily) -
Method Summary
Modifier and TypeMethodDescriptionboolean
Used to implement this sentence from o.e.j.annotation.DefaultLocation: "Wildcards and the use of type variables are always excluded from NonNullByDefault."boolean
boundCheck(TypeBinding argumentType)
Returns true if the argument type satisfies the wildcard bound(s)boolean
Answer true if the receiver can be instantiatedclone(TypeBinding immaterial)
Virtual copy constructor: a copy is made of the receiver's entire instance state and then suitably parameterized by the arguments to the clone operation as seen fit by each type.collectMissingTypes(List<TypeBinding> missingTypes)
Iterate through the type components to collect instances of leaf missing typesvoid
collectSubstitutes(Scope scope, TypeBinding actualType, InferenceContext inferenceContext, int constraint)
Collect the substitutes into a map for certain type variables inside the receiver type e.g.char[]
computeUniqueKey(boolean isLeaf)
p.X{} -> Lp/X; char[]
Answer the receiver's constant pool name.long
determineNullBitsFromDeclaration(Scope scope, Wildcard wildcard)
compute the nullTagBits from type annotations and bound.boolean
Call this before descending into type details to prevent infinite recursion.erasure()
void
evaluateNullAnnotations(Scope scope, Wildcard wildcard)
evaluate null type annotations and check / copy nullTagBits from bound and typevariable.void
Exit the context of a potentially recursive function.char[]
Answer the receiver classfile signature.int
hashCode()
boolean
hasTypeBit(int bit)
Answer an additional bit characterizing this type, likeTypeIds.BitAutoCloseable
.boolean
Returns true if the type hierarchy is connectedboolean
Returns true if the current type denotes an intersection type: Number & Comparableboolean
isProperType(boolean admitCapture18)
JLS8 Sect 18.1.1boolean
isSuperclassOf(ReferenceBinding otherType)
Answer true if the receiver is in the superclass hierarchy of aType NOTE: Object.isSuperclassOf(Object) -> falseboolean
Returns true if wildcard type of the form '?'boolean
Returns true if the type is a wildcardint
kind()
boolean
mentionsAny(TypeBinding[] parameters, int idx)
Does this type mention any of the given type parameters, except the one at position 'idx'?char[]
nullAnnotatedReadableName(CompilerOptions options, boolean shortNames)
Answer a readable name (for error reporting) that includes nullness type annotations.char[]
Answer the receiver's signature.void
setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations)
char[]
char[]
Answer the receiver classfile signature.char[]
void
swapUnresolved(UnresolvedReferenceBinding unresolvedType, ReferenceBinding resolvedType, LookupEnvironment env)
toString()
Returns associated type variable, or null in case of inconsistencyReturn this type minus its type annotationsPerform capture "deconversion" on a given typelong
Refresh some tagBits from details into the main type.Return this type minus its toplevel null annotations.Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
appendNullAnnotation, applyCloseableClassWhitelists, applyCloseableInterfaceWhitelists, availableFields, availableMethods, binarySearch, binarySearch, canBeSeenBy, canBeSeenBy, canBeSeenBy, components, computeGenericTypeSignature, computeId, computeId, depth, detectAnnotationCycle, downwardsProjection, enclosingTypeAt, enumConstantCount, fieldCount, fields, getAccessFlags, getAnnotations, getAnnotationTagBits, getEnclosingInstancesSlotSize, getExactConstructor, getExactMethod, getField, getField, getFileName, getInterfaceAbstractContracts, getMemberType, getMethods, getMethods, getOuterLocalVariablesSlotSize, getPackage, getSingleAbstractMethod, getTypeVariable, hasEnclosingInstanceContext, hasHierarchyCheckStarted, hasIncompatibleSuperType, hasMemberTypes, hasMethodWithNumArgs, hasNullBit, hasRestrictedAccess, implementsInterface, innerCanBeSeenBy, innerCanBeSeenBy, isAbstract, isAnnotationType, isBinaryBinding, isClass, isCompatibleWith, isConsistentIntersection, isDefault, isDeprecated, isEnum, isFinal, isFunctionalInterface, isHierarchyBeingActivelyConnected, isHierarchyBeingConnected, isInterface, isNestmateOf, isNonSealed, isOrEnclosedByPrivateType, isPrivate, isProtected, isPublic, isSealed, isStatic, isStrictfp, isSubtypeOf, isSubTypeOfRTL, isThrowable, isUncheckedException, isUsed, isViewedAsDeprecated, memberTypes, methods, module, outermostEnclosingType, permittedTypes, qualifiedSourceName, readableName, retrieveAnnotationHolder, setAnnotations, setContainerAnnotationType, setHierarchyCheckDone, shortReadableName, sortFields, sortMethods, syntheticEnclosingInstanceTypes, tagAsHavingDefectiveContainerType, unResolvedFields, upwardsProjection
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding
capture, closestMatch, containerAnnotationType, dimensions, enclosingMethod, enclosingType, equalsEquals, findSuperTypeOriginatingFrom, findSuperTypeOriginatingFrom, genericCast, getErasureCompatibleType, getTypeAnnotations, hasNullTypeAnnotations, hasTypeAnnotations, hasValueBasedTypeAnnotation, isAnonymousType, isArrayType, isBaseType, isBoundParameterizedType, isBoxedPrimitiveType, isBoxingCompatibleWith, isCapture, isCompatibleWith, isEquivalentTo, isFreeTypeVariable, isFunctionalType, isGenericType, isHierarchyInconsistent, isIntersectionType18, isLocalType, isMemberType, isNestedType, isNumericType, isParameterizedType, isParameterizedTypeWithActualArguments, isParameterizedWithOwnVariables, isPolyType, isPotentiallyCompatibleWith, isPrimitiveOrBoxedPrimitiveType, isPrimitiveType, isProvablyDistinct, isRawType, isRecord, isReifiable, isRepeatableAnnotationType, isTypeArgumentContainedBy, isTypeVariable, isUnresolvedType, leafComponentType, needsUncheckedConversion, notEquals, original, prototype, qualifiedPackageName, signableName, sIsMoreSpecific, syntheticOuterLocalVariables, typeVariables, wellKnownBaseType, wellKnownType
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding
computeUniqueKey, initializeDeprecatedAnnotationTagBits, isParameter, isTaggedRepeatable, isValid, isValidBinding, isVolatile, problemId, setAnnotations
-
Field Details
-
genericType
-
rank
public int rank -
bound
-
otherBounds
-
boundKind
public int boundKind
-
-
Constructor Details
-
WildcardBinding
public WildcardBinding(ReferenceBinding genericType, int rank, TypeBinding bound, TypeBinding[] otherBounds, int boundKind, LookupEnvironment environment)When unbound, the bound denotes the corresponding type variable (so as to retrieve its bound lazily)
-
-
Method Details
-
allBounds
-
setTypeAnnotations
- Overrides:
setTypeAnnotations
in classTypeBinding
-
evaluateNullAnnotations
evaluate null type annotations and check / copy nullTagBits from bound and typevariable. may be invoked repeatedly.- Parameters:
scope
- (may be null, if wildcard is null)wildcard
- (may be null. if non-null, errors are reported and type annotations are dropped from this.bound in case of conflicts.)
-
determineNullBitsFromDeclaration
compute the nullTagBits from type annotations and bound.- Parameters:
scope
- (may be null, if wildcard is null)wildcard
- (may be null. if non-null, errors are reported and type annotations are dropped from this.bound in case of conflicts.)
-
actualType
- Overrides:
actualType
in classTypeBinding
-
kind
public int kind()- Overrides:
kind
in classTypeBinding
-
boundCheck
Returns true if the argument type satisfies the wildcard bound(s) -
canBeInstantiated
public boolean canBeInstantiated()Description copied from class:ReferenceBinding
Answer true if the receiver can be instantiated- Overrides:
canBeInstantiated
in classReferenceBinding
- See Also:
ReferenceBinding.canBeInstantiated()
-
collectMissingTypes
Description copied from class:TypeBinding
Iterate through the type components to collect instances of leaf missing types- Overrides:
collectMissingTypes
in classTypeBinding
- Returns:
- missing types
- See Also:
TypeBinding.collectMissingTypes(java.util.List)
-
collectSubstitutes
public void collectSubstitutes(Scope scope, TypeBinding actualType, InferenceContext inferenceContext, int constraint)Collect the substitutes into a map for certain type variables inside the receiver type e.g. Collection.collectSubstitutes(Collection - >, Map), will populate Map with: T --> List
Constraints: A << F corresponds to: F.collectSubstitutes(..., A, ..., CONSTRAINT_EXTENDS (1)) A = F corresponds to: F.collectSubstitutes(..., A, ..., CONSTRAINT_EQUAL (0)) A >> F corresponds to: F.collectSubstitutes(..., A, ..., CONSTRAINT_SUPER (2)) - Overrides:
collectSubstitutes
in classTypeBinding
-
computeUniqueKey
public char[] computeUniqueKey(boolean isLeaf)Description copied from class:ReferenceBinding
p.X{} -> Lp/X; - Overrides:
computeUniqueKey
in classReferenceBinding
-
constantPoolName
public char[] constantPoolName()Description copied from class:ReferenceBinding
Answer the receiver's constant pool name. NOTE: This method should only be used during/after code gen.- Overrides:
constantPoolName
in classReferenceBinding
- See Also:
TypeBinding.constantPoolName()
-
clone
Description copied from class:TypeBinding
Virtual copy constructor: a copy is made of the receiver's entire instance state and then suitably parameterized by the arguments to the clone operation as seen fit by each type. Parameters may not make sense for every type in the hierarchy, in which case they are silently ignored. A type may choose to retain a copy of the prototype for reference.- Overrides:
clone
in classTypeBinding
-
annotatedDebugName
- Overrides:
annotatedDebugName
in classTypeBinding
-
debugName
- Overrides:
debugName
in classReferenceBinding
- See Also:
TypeBinding.debugName()
-
erasure
- Overrides:
erasure
in classTypeBinding
-
genericTypeSignature
public char[] genericTypeSignature()Description copied from class:TypeBinding
Answer the receiver classfile signature. Arrays & base types do not distinguish between signature() & constantPoolName(). NOTE: This method should only be used during/after code gen.- Overrides:
genericTypeSignature
in classTypeBinding
-
hashCode
public int hashCode()- Overrides:
hashCode
in classReferenceBinding
-
hasTypeBit
public boolean hasTypeBit(int bit)Description copied from class:TypeBinding
Answer an additional bit characterizing this type, likeTypeIds.BitAutoCloseable
.- Overrides:
hasTypeBit
in classTypeBinding
-
isSuperclassOf
Description copied from class:ReferenceBinding
Answer true if the receiver is in the superclass hierarchy of aType NOTE: Object.isSuperclassOf(Object) -> false -
isIntersectionType
public boolean isIntersectionType()Description copied from class:TypeBinding
Returns true if the current type denotes an intersection type: Number & Comparable>- Overrides:
isIntersectionType
in classTypeBinding
-
getIntersectingTypes
- Overrides:
getIntersectingTypes
in classTypeBinding
-
isHierarchyConnected
public boolean isHierarchyConnected()Description copied from class:ReferenceBinding
Returns true if the type hierarchy is connected- Overrides:
isHierarchyConnected
in classReferenceBinding
-
enterRecursiveFunction
public boolean enterRecursiveFunction()Description copied from class:TypeBinding
Call this before descending into type details to prevent infinite recursion.- Overrides:
enterRecursiveFunction
in classTypeBinding
- Returns:
- true if a recursion was not already started.
-
exitRecursiveFunction
public void exitRecursiveFunction()Description copied from class:TypeBinding
Exit the context of a potentially recursive function.- Overrides:
exitRecursiveFunction
in classTypeBinding
-
isProperType
public boolean isProperType(boolean admitCapture18)Description copied from class:TypeBinding
JLS8 Sect 18.1.1- Overrides:
isProperType
in classReferenceBinding
- Parameters:
admitCapture18
- request ifCaptureBinding18
shuld be considered as a proper type. If unsure say 'true', only inScope.greaterLowerBound(TypeBinding[], Scope, LookupEnvironment)
CaptureBinding18 has to be excluded to prevent an NPE on a branch that heuristically tries to avoid inconsistent intersections.
-
isUnboundWildcard
public boolean isUnboundWildcard()Description copied from class:TypeBinding
Returns true if wildcard type of the form '?' (no bound)- Overrides:
isUnboundWildcard
in classTypeBinding
-
isWildcard
public boolean isWildcard()Description copied from class:TypeBinding
Returns true if the type is a wildcard- Overrides:
isWildcard
in classTypeBinding
-
readableName
public char[] readableName()Description copied from class:ReferenceBinding
Answer the receiver's signature. NOTE: This method should only be used during/after code gen.- Overrides:
readableName
in classReferenceBinding
-
nullAnnotatedReadableName
Description copied from class:TypeBinding
Answer a readable name (for error reporting) that includes nullness type annotations.- Overrides:
nullAnnotatedReadableName
in classReferenceBinding
- See Also:
TypeBinding.nullAnnotatedReadableName(CompilerOptions,boolean)
-
shortReadableName
public char[] shortReadableName()- Overrides:
shortReadableName
in classReferenceBinding
-
signature
public char[] signature()Description copied from class:TypeBinding
Answer the receiver classfile signature. Arrays & base types do not distinguish between signature() & constantPoolName(). NOTE: This method should only be used during/after code gen.- Overrides:
signature
in classReferenceBinding
- See Also:
TypeBinding.signature()
-
sourceName
public char[] sourceName()- Overrides:
sourceName
in classReferenceBinding
-
superclass
- Overrides:
superclass
in classReferenceBinding
-
superInterfaces
- Overrides:
superInterfaces
in classReferenceBinding
-
swapUnresolved
public void swapUnresolved(UnresolvedReferenceBinding unresolvedType, ReferenceBinding resolvedType, LookupEnvironment env)- Overrides:
swapUnresolved
in classTypeBinding
-
toString
- Overrides:
toString
in classObject
- See Also:
Object.toString()
-
typeVariable
Returns associated type variable, or null in case of inconsistency -
unannotated
Description copied from class:TypeBinding
Return this type minus its type annotations- Overrides:
unannotated
in classTypeBinding
-
withoutToplevelNullAnnotation
Description copied from class:TypeBinding
Return this type minus its toplevel null annotations. Any annotations on type arguments or bounds are retained.- Overrides:
withoutToplevelNullAnnotation
in classTypeBinding
-
uncapture
Description copied from class:TypeBinding
Perform capture "deconversion" on a given type- Overrides:
uncapture
in classTypeBinding
-
mentionsAny
Description copied from class:TypeBinding
Does this type mention any of the given type parameters, except the one at position 'idx'?- Overrides:
mentionsAny
in classTypeBinding
-
acceptsNonNullDefault
public boolean acceptsNonNullDefault()Description copied from class:TypeBinding
Used to implement this sentence from o.e.j.annotation.DefaultLocation: "Wildcards and the use of type variables are always excluded from NonNullByDefault."- Overrides:
acceptsNonNullDefault
in classReferenceBinding
-
updateTagBits
public long updateTagBits()Description copied from class:TypeBinding
Refresh some tagBits from details into the main type. Currently handled: TagBits.HasNullTypeAnnotation- Overrides:
updateTagBits
in classTypeBinding
-