Class TypeVariableBinding
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.TypeVariableBinding
- Direct Known Subclasses:
CaptureBinding,InferenceVariable
Binding for a type parameter, held by source/binary type or method.
-
Field Summary
FieldsModifier and TypeFieldDescriptionDenote the first explicit (binding) bound amongst the supertypes (from declaration in source) If no superclass was specified, then it denotes the first superinterface, or null if none was specified.char[]intFields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
compoundName, fPackage, LUB_GENERIC, modifiers, samProblemBinding, singleAbstractMethod, sourceNameFields 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, VOIDFields 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
ConstructorsModifierConstructorDescriptionTypeVariableBinding(char[] sourceName, Binding declaringElement, int rank, LookupEnvironment environment) protectedTypeVariableBinding(char[] sourceName, LookupEnvironment environment) TypeVariableBinding(TypeVariableBinding prototype) -
Method Summary
Modifier and TypeMethodDescriptionbooleanUsed to implement this sentence from o.e.j.annotation.DefaultLocation: "Wildcards and the use of type variables are always excluded from NonNullByDefault."protected voidappendNullAnnotation(StringBuilder nameBuffer, CompilerOptions options) boundCheck(Substitution substitution, TypeBinding argumentType, Scope scope, ASTNode location) Returns true if the argument type satisfies all bounds of the type parameterintbooleanAnswer true if the receiver can be instantiatedclone(TypeBinding enclosingType) 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.voidcollectSubstitutes(Scope scope, TypeBinding actualType, InferenceContext inferenceContext, int constraint) Collect the substitutes into a map for certain type variables inside the receiver type e.g.combineTypeAnnotations(TypeBinding substitute) char[]computeUniqueKey(boolean isLeaf) p.X<T extends Y & I, U extends Y> -> Lp/X<TT;TU;>;char[]Answer the receiver's constant pool name.downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) Perform a downwards type projection as per JLS 4.10.5booleanCall this before descending into type details to prevent infinite recursion.booleanerasure()voidevaluateNullAnnotations(Scope scope, TypeParameter parameter) voidExit the context of a potentially recursive function.voidchar[]T::Ljava/util/Map;:Ljava/io/Serializable; T:LY<TT;>char[]T::Ljava/util/Map;:Ljava/io/Serializable; T:LY<TT;>protected TypeBinding[]booleanhasTypeBit(int bit) Answer an additional bit characterizing this type, likeTypeIds.BitAutoCloseable.booleanisErasureBoundTo(TypeBinding type) Returns true if the type variable is directly bound to a given typebooleanbooleanReturns true if the type hierarchy is connectedbooleanisInterchangeableWith(TypeVariableBinding otherVariable, Substitution substitute) Returns true if the 2 variables are playing exact same role: they have the same bounds, providing one is substituted with the other:<T1 extends List<T1>>is interchangeable with<T2 extends List<T2>>.booleanisProperType(boolean admitCapture18) JLS8 Sect 18.1.1booleanisSubtypeOf(TypeBinding other, boolean simulatingBugJDK8026527) booleanReturns true if the type was declared as a type variableintkind()booleanmentionsAny(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.setFirstBound(TypeBinding firstBound) setSuperClass(ReferenceBinding superclass) setSuperInterfaces(ReferenceBinding[] superInterfaces) voidsetTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) char[]toString()Return this type minus its type annotationslongRefresh some tagBits from details into the main type.Upper bound doesn't perform erasureupwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) Perform an upwards type projection as per JLS 4.10.5Return this type minus its toplevel null annotations.Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
applyCloseableClassWhitelists, applyCloseableInterfaceWhitelists, availableFields, availableMethods, binarySearch, binarySearch, canBeSeenBy, canBeSeenBy, canBeSeenBy, computeGenericTypeSignature, computeId, computeId, depth, detectAnnotationCycle, detectWrapperResource, enclosingTypeAt, enumConstantCount, fieldCount, fields, getAccessFlags, getAnnotations, getAnnotationTagBits, getComponent, getEnclosingInstancesSlotSize, getExactConstructor, getExactMethod, getField, getField, getFileName, getInterfaceAbstractContracts, getMemberType, getMethods, getMethods, getOuterLocalVariablesSlotSize, getPackage, getRecordComponent, getRecordComponentAccessor, getSingleAbstractMethod, getTypeVariable, hasEnclosingInstanceContext, hashCode, hasHierarchyCheckStarted, hasIncompatibleSuperType, hasMemberTypes, hasMethodWithNumArgs, hasNullBit, hasRestrictedAccess, implementsInterface, innerCanBeSeenBy, innerCanBeSeenBy, isAbstract, isAnnotationType, isBinaryBinding, isClass, isCompatibleWith, isConsistentIntersection, isDefault, isDeprecated, isEnum, isFieldInitializationFinished, isFinal, isFunctionalInterface, isHierarchyBeingActivelyConnected, isHierarchyBeingConnected, isImplicitType, isInPreconstructorContext, isInterface, isNestmateOf, isNonSealed, isOrEnclosedByPrivateType, isPrivate, isProtected, isPublic, isSealed, isStatic, isStrictfp, isSubTypeOfRTL, isSuperclassOf, isThrowable, isUncheckedException, isUsed, isViewedAsDeprecated, memberTypes, methods, module, outermostEnclosingType, permittedTypes, qualifiedSourceName, readableName, retrieveAnnotationHolder, setAnnotations, setContainerAnnotationType, setHierarchyCheckDone, shortReadableName, signature, sortFields, sortMethods, sourceName, syntheticEnclosingInstanceTypes, tagAsHavingDefectiveContainerType, unResolvedComponents, unResolvedFieldsMethods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding
actualType, capture, closestMatch, collectMissingTypes, components, containerAnnotationType, dimensions, enclosingMethod, enclosingType, equalsEquals, findSuperTypeOriginatingFrom, findSuperTypeOriginatingFrom, genericCast, getErasureCompatibleType, getIntersectingTypes, getTypeAnnotations, hasNullTypeAnnotations, hasTypeAnnotations, hasValueBasedTypeAnnotation, isAnonymousType, isArrayType, isBaseType, isBoundParameterizedType, isBoxedPrimitiveType, isBoxingCompatibleWith, isCapture, isCompatibleWith, isEquivalentTo, isFunctionalType, isGenericType, isHierarchyInconsistent, isIntersectionType, isIntersectionType18, isLocalType, isMemberType, isNestedType, isNonDenotable, isNumericType, isParameterizedType, isParameterizedTypeWithActualArguments, isParameterizedWithOwnVariables, isPolyType, isPotentiallyCompatibleWith, isPrimitiveOrBoxedPrimitiveType, isPrimitiveType, isProvablyDistinct, isRawType, isReadyForAnnotations, isRecord, isReifiable, isRepeatableAnnotationType, isTypeArgumentContainedBy, isUnboundWildcard, isUnresolvedType, isWildcard, leafComponentType, needsUncheckedConversion, notEquals, original, prototype, qualifiedPackageName, signableName, sIsMoreSpecific, swapUnresolved, syntheticOuterLocalVariables, syntheticTypeVariablesMentioned, typeVariables, uncapture, wellKnownBaseType, wellKnownTypeMethods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding
computeUniqueKey, initializeDeprecatedAnnotationTagBits, isParameter, isPatternVariable, isTaggedRepeatable, isValid, isValidBinding, isVolatile, problemId, setAnnotations
-
Field Details
-
declaringElement
-
rank
public int rank -
firstBound
Denote the first explicit (binding) bound amongst the supertypes (from declaration in source) If no superclass was specified, then it denotes the first superinterface, or null if none was specified. -
superclass
-
superInterfaces
-
genericTypeSignature
public char[] genericTypeSignature
-
-
Constructor Details
-
TypeVariableBinding
public TypeVariableBinding(char[] sourceName, Binding declaringElement, int rank, LookupEnvironment environment) -
TypeVariableBinding
-
TypeVariableBinding
-
-
Method Details
-
boundCheck
public TypeConstants.BoundCheckStatus boundCheck(Substitution substitution, TypeBinding argumentType, Scope scope, ASTNode location) Returns true if the argument type satisfies all bounds of the type parameter- Parameters:
location- if non-null this may be used for reporting errors relating to null type annotations (if enabled)
-
boundsCount
public int boundsCount() -
canBeInstantiated
public boolean canBeInstantiated()Description copied from class:ReferenceBindingAnswer true if the receiver can be instantiated- Overrides:
canBeInstantiatedin classReferenceBinding- See Also:
-
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<T>.collectSubstitutes(Collection<List<X>>, Map)will populate Map with:T --> List<X>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:
collectSubstitutesin classTypeBinding
-
computeUniqueKey
public char[] computeUniqueKey(boolean isLeaf) Description copied from class:ReferenceBindingp.X<T extends Y & I, U extends Y> -> Lp/X<TT;TU;>;- Overrides:
computeUniqueKeyin classReferenceBinding
-
constantPoolName
public char[] constantPoolName()Description copied from class:ReferenceBindingAnswer the receiver's constant pool name. NOTE: This method should only be used during/after code gen.- Overrides:
constantPoolNamein classReferenceBinding
-
clone
Description copied from class:TypeBindingVirtual 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:
clonein classTypeBinding
-
annotatedDebugName
- Overrides:
annotatedDebugNamein classTypeBinding
-
debugName
- Overrides:
debugNamein classReferenceBinding- See Also:
-
erasure
- Overrides:
erasurein classTypeBinding
-
genericSignature
public char[] genericSignature()T::Ljava/util/Map;:Ljava/io/Serializable; T:LY<TT;> -
genericTypeSignature
public char[] genericTypeSignature()T::Ljava/util/Map;:Ljava/io/Serializable; T:LY<TT;>- Overrides:
genericTypeSignaturein classTypeBinding
-
hasTypeBit
public boolean hasTypeBit(int bit) Description copied from class:TypeBindingAnswer an additional bit characterizing this type, likeTypeIds.BitAutoCloseable.- Overrides:
hasTypeBitin classTypeBinding
-
isErasureBoundTo
Returns true if the type variable is directly bound to a given type -
isHierarchyConnected
public boolean isHierarchyConnected()Description copied from class:ReferenceBindingReturns true if the type hierarchy is connected- Overrides:
isHierarchyConnectedin classReferenceBinding
-
isInterchangeableWith
Returns true if the 2 variables are playing exact same role: they have the same bounds, providing one is substituted with the other:<T1 extends List<T1>>is interchangeable with<T2 extends List<T2>>. -
isSubtypeOf
- Overrides:
isSubtypeOfin classReferenceBinding
-
enterRecursiveFunction
public boolean enterRecursiveFunction()Description copied from class:TypeBindingCall this before descending into type details to prevent infinite recursion.- Overrides:
enterRecursiveFunctionin classTypeBinding- Returns:
- true if a recursion was not already started.
-
exitRecursiveFunction
public void exitRecursiveFunction()Description copied from class:TypeBindingExit the context of a potentially recursive function.- Overrides:
exitRecursiveFunctionin classTypeBinding
-
enterRecursiveProjectionFunction
public boolean enterRecursiveProjectionFunction() -
exitRecursiveProjectionFunction
public void exitRecursiveProjectionFunction() -
isProperType
public boolean isProperType(boolean admitCapture18) Description copied from class:TypeBindingJLS8 Sect 18.1.1- Overrides:
isProperTypein classReferenceBinding- Parameters:
admitCapture18- request ifCaptureBinding18shuld 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.
-
isTypeVariable
public boolean isTypeVariable()Returns true if the type was declared as a type variable- Overrides:
isTypeVariablein classTypeBinding
-
kind
public int kind()- Overrides:
kindin classTypeBinding
-
mentionsAny
Description copied from class:TypeBindingDoes this type mention any of the given type parameters, except the one at position 'idx'?- Overrides:
mentionsAnyin classTypeBinding
-
otherUpperBounds
-
readableName
public char[] readableName()Description copied from class:ReferenceBindingAnswer the receiver's signature. NOTE: This method should only be used during/after code gen.- Overrides:
readableNamein classReferenceBinding- See Also:
-
setTypeAnnotations
- Overrides:
setTypeAnnotationsin classTypeBinding
-
shortReadableName
public char[] shortReadableName()- Overrides:
shortReadableNamein classReferenceBinding- See Also:
-
superclass
- Overrides:
superclassin classReferenceBinding
-
superInterfaces
- Overrides:
superInterfacesin classReferenceBinding
-
toString
-
nullAnnotatedReadableName
Description copied from class:TypeBindingAnswer a readable name (for error reporting) that includes nullness type annotations.- Overrides:
nullAnnotatedReadableNamein classReferenceBinding- See Also:
-
appendNullAnnotation
- Overrides:
appendNullAnnotationin classReferenceBinding
-
unannotated
Description copied from class:TypeBindingReturn this type minus its type annotations- Overrides:
unannotatedin classTypeBinding
-
withoutToplevelNullAnnotation
Description copied from class:TypeBindingReturn this type minus its toplevel null annotations. Any annotations on type arguments or bounds are retained.- Overrides:
withoutToplevelNullAnnotationin classTypeBinding
-
upperBound
Upper bound doesn't perform erasure -
allUpperBounds
-
evaluateNullAnnotations
-
setFirstBound
-
setSuperClass
-
setSuperInterfaces
-
getDerivedTypesForDeferredInitialization
-
combineTypeAnnotations
-
acceptsNonNullDefault
public boolean acceptsNonNullDefault()Description copied from class:TypeBindingUsed to implement this sentence from o.e.j.annotation.DefaultLocation: "Wildcards and the use of type variables are always excluded from NonNullByDefault."- Overrides:
acceptsNonNullDefaultin classReferenceBinding
-
updateTagBits
public long updateTagBits()Description copied from class:TypeBindingRefresh some tagBits from details into the main type. Currently handled: TagBits.HasNullTypeAnnotation- Overrides:
updateTagBitsin classTypeBinding
-
isFreeTypeVariable
public boolean isFreeTypeVariable()- Overrides:
isFreeTypeVariablein classTypeBinding
-
upwardsProjection
Description copied from class:ReferenceBindingPerform an upwards type projection as per JLS 4.10.5- Overrides:
upwardsProjectionin classReferenceBinding- Parameters:
scope- Relevant scope for evaluating type projectionmentionedTypeVariables- Filter for mentioned type variabled- Returns:
- Upwards type projection of 'this', or null if downwards projection is undefined
-
downwardsProjection
Description copied from class:ReferenceBindingPerform a downwards type projection as per JLS 4.10.5- Overrides:
downwardsProjectionin classReferenceBinding- Parameters:
scope- Relevant scope for evaluating type projectionmentionedTypeVariables- Filter for mentioned type variabled- Returns:
- Downwards type projection of 'this', or null if downwards projection is undefined
-