org.aspectj.org.eclipse.jdt.internal.compiler.lookup
Class InferenceVariable

java.lang.Object
  extended by org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding
      extended by org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding
          extended by org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
              extended by org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding
                  extended by org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InferenceVariable

public class InferenceVariable
extends TypeVariableBinding

Implementation of 18.1.1 in JLS8


Field Summary
 
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding
declaringElement, firstBound, genericTypeSignature, rank, superclass, superInterfaces
 
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, 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, DefaultLocationTypeArgument, DefaultLocationTypeBound, DefaultLocationTypeParameter, FIELD, GENERIC_TYPE, IMPORT, INTERSECTION_CAST_TYPE, INTERSECTION_TYPE, LOCAL, METHOD, NO_ANNOTATIONS, NO_ELEMENT_VALUE_PAIRS, NO_EXCEPTIONS, NO_FIELDS, NO_MEMBER_TYPES, NO_METHODS, NO_NULL_DEFAULT, NO_PARAMETER_NAMES, NO_PARAMETERS, NO_REFERENCE_TYPES, NO_SUPERINTERFACES, NO_TYPE_VARIABLES, NO_TYPES, NONNULL_BY_DEFAULT, NULL_UNSPECIFIED_BY_DEFAULT, NullnessDefaultMASK, PACKAGE, PARAMETERIZED_TYPE, POLY_TYPE, RAW_TYPE, TYPE, TYPE_PARAMETER, TYPE_USE, UNINITIALIZED_FIELDS, UNINITIALIZED_METHODS, UNINITIALIZED_REFERENCE_TYPES, VARIABLE, WILDCARD_TYPE
 
Constructor Summary
InferenceVariable(TypeBinding typeParameter, int variableRank, InvocationSite site, LookupEnvironment environment, ReferenceBinding object)
           
 
Method Summary
 TypeBinding clone(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.
 char[] constantPoolName()
          Answer the receiver's constant pool name.
 java.lang.String debugName()
           
 boolean equals(java.lang.Object obj)
           
 TypeBinding erasure()
           
 PackageBinding getPackage()
           
 int hashCode()
           
 boolean hasTypeBit(int bit)
          Answer an additional bit characterizing this type, like TypeIds.BitAutoCloseable.
 boolean isCompatibleWith(TypeBinding right, Scope scope)
          Answer true if the receiver type can be assigned to the argument type (right) In addition to improving performance, caching also ensures there is no infinite regression since per nature, the compatibility check is recursive through parameterized type arguments (122775)
 boolean isProperType(boolean admitCapture18)
          JLS8 Sect 18.1.1
 InferenceVariable prototype()
          Return the primordial type from which the receiver was cloned.
 char[] qualifiedSourceName()
          Answer the source name for the type.
 char[] readableName()
          Answer the receiver's signature.
 char[] sourceName()
           
 ReferenceBinding[] superInterfaces()
           
 java.lang.String toString()
           
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding
acceptsNonNullDefault, annotatedDebugName, boundCheck, boundsCount, canBeInstantiated, collectSubstitutes, combineTypeAnnotations, computeUniqueKey, enterRecursiveFunction, evaluateNullAnnotations, exitRecursiveFunction, genericSignature, genericTypeSignature, isErasureBoundTo, isHierarchyConnected, isInterchangeableWith, isSubtypeOf, isTypeVariable, kind, mentionsAny, nullAnnotatedReadableName, otherUpperBounds, setFirstBound, setSuperClass, setSuperInterfaces, setTypeAnnotations, shortReadableName, superclass, unannotated, upperBound
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
appendNullAnnotation, applyCloseableClassWhitelists, applyCloseableInterfaceWhitelists, availableFields, availableMethods, binarySearch, binarySearch, canBeSeenBy, canBeSeenBy, canBeSeenBy, computeGenericTypeSignature, computeId, depth, detectAnnotationCycle, enclosingTypeAt, enumConstantCount, fieldCount, fields, getAccessFlags, getAnnotations, getAnnotationTagBits, getEnclosingInstancesSlotSize, getExactConstructor, getExactMethod, getField, getField, getFileName, getMemberType, getMethods, getMethods, getOuterLocalVariablesSlotSize, getSingleAbstractMethod, getTypeVariable, hasIncompatibleSuperType, hasMemberTypes, hasRestrictedAccess, implementsInterface, innerCanBeSeenBy, innerCanBeSeenBy, isAbstract, isAnnotationType, isBinaryBinding, isClass, isConsistentIntersection, isDefault, isDeprecated, isEnum, isFinal, isFunctionalInterface, isHierarchyBeingActivelyConnected, isHierarchyBeingConnected, isInterface, isOrEnclosedByPrivateType, isPrivate, isProtected, isPublic, isStatic, isStrictfp, isSubTypeOfRTL, isSuperclassOf, isThrowable, isUncheckedException, isUsed, isViewedAsDeprecated, memberTypes, methods, outermostEnclosingType, retrieveAnnotationHolder, setAnnotations, setContainerAnnotationType, signature, sortFields, sortMethods, syntheticEnclosingInstanceTypes, tagAsHavingDefectiveContainerType, unResolvedFields
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding
actualType, capture, closestMatch, collectMissingTypes, containerAnnotationType, dimensions, enclosingType, equalsEquals, findSuperTypeOriginatingFrom, findSuperTypeOriginatingFrom, genericCast, getErasureCompatibleType, getIntersectingTypes, getTypeAnnotations, hasNullTypeAnnotations, hasTypeAnnotations, isAnonymousType, isArrayType, isBaseType, isBoundParameterizedType, isBoxedPrimitiveType, isCapture, isCompatibleWith, isEquivalentTo, isGenericType, isHierarchyInconsistent, isIntersectionCastType, isIntersectionType, isLocalType, isMemberType, isNestedType, isNumericType, isParameterizedType, isParameterizedTypeWithActualArguments, isParameterizedWithOwnVariables, isPrimitiveOrBoxedPrimitiveType, isPrimitiveType, isProvablyDistinct, isRawType, isReifiable, isRepeatableAnnotationType, isTypeArgumentContainedBy, isUnboundWildcard, isUnresolvedType, isWildcard, leafComponentType, needsUncheckedConversion, notEquals, original, qualifiedPackageName, sIsMoreSpecific, swapUnresolved, syntheticOuterLocalVariables, typeVariables, uncapture, wellKnownType
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding
computeUniqueKey, initializeDeprecatedAnnotationTagBits, isParameter, isTaggedRepeatable, isValidBinding, isVolatile, problemId, setAnnotations
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

InferenceVariable

public InferenceVariable(TypeBinding typeParameter,
                         int variableRank,
                         InvocationSite site,
                         LookupEnvironment environment,
                         ReferenceBinding object)
Method Detail

clone

public TypeBinding clone(TypeBinding enclosingType)
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 class TypeVariableBinding

prototype

public InferenceVariable prototype()
Description copied from class: TypeBinding
Return the primordial type from which the receiver was cloned. Not all types track a prototype, only SourceTypeBinding, BinaryTypeBinding and UnresolvedReferenceBinding do so as of now. In fact some types e.g ParameterizedTypeBinding should not do so. Deflecting a query to a prototype would lead to wrong results in the case of ParameterizedTypeBinding

Overrides:
prototype in class TypeBinding

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 class TypeVariableBinding

getPackage

public PackageBinding getPackage()
Overrides:
getPackage in class ReferenceBinding

isCompatibleWith

public boolean isCompatibleWith(TypeBinding right,
                                Scope scope)
Description copied from class: ReferenceBinding
Answer true if the receiver type can be assigned to the argument type (right) In addition to improving performance, caching also ensures there is no infinite regression since per nature, the compatibility check is recursive through parameterized type arguments (122775)

Overrides:
isCompatibleWith in class ReferenceBinding

isProperType

public boolean isProperType(boolean admitCapture18)
Description copied from class: TypeBinding
JLS8 Sect 18.1.1

Overrides:
isProperType in class TypeVariableBinding
Parameters:
admitCapture18 - request if CaptureBinding18 shuld be considered as a proper type. If unsure say 'true', only in Scope.greaterLowerBound(TypeBinding[], Scope, LookupEnvironment) CaptureBinding18 has to be excluded to prevent an NPE on a branch that heuristically tries to avoid inconsistent intersections.

superInterfaces

public ReferenceBinding[] superInterfaces()
Overrides:
superInterfaces in class TypeVariableBinding

qualifiedSourceName

public char[] qualifiedSourceName()
Description copied from class: ReferenceBinding
Answer the source name for the type. In the case of member types, as the qualified name from its top level type. For example, for a member type N defined inside M & A: "A.M.N".

Overrides:
qualifiedSourceName in class ReferenceBinding

sourceName

public char[] sourceName()
Overrides:
sourceName in class ReferenceBinding

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 class TypeVariableBinding
See Also:
ReferenceBinding.readableName()

hasTypeBit

public boolean hasTypeBit(int bit)
Description copied from class: TypeBinding
Answer an additional bit characterizing this type, like TypeIds.BitAutoCloseable.

Overrides:
hasTypeBit in class TypeVariableBinding

debugName

public java.lang.String debugName()
Overrides:
debugName in class TypeVariableBinding
See Also:
TypeBinding.debugName()

toString

public java.lang.String toString()
Overrides:
toString in class TypeVariableBinding
See Also:
Object.toString()

hashCode

public int hashCode()
Overrides:
hashCode in class ReferenceBinding

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

erasure

public TypeBinding erasure()
Overrides:
erasure in class TypeVariableBinding