protected final class UpperBoundAnnotatedTypeFactory.UpperBoundQualifierHierarchy extends MultiGraphQualifierHierarchy
MultiGraphQualifierHierarchy.MultiGraphFactorybottoms, polymorphicQualifier, polyQualifiers, supertypesDirect, supertypesTransitive, tops| Constructor and Description |
|---|
UpperBoundQualifierHierarchy(MultiGraphQualifierHierarchy.MultiGraphFactory factory) |
| Modifier and Type | Method and Description |
|---|---|
javax.lang.model.element.AnnotationMirror |
greatestLowerBound(javax.lang.model.element.AnnotationMirror a1,
javax.lang.model.element.AnnotationMirror a2)
Returns the greatest lower bound for the qualifiers a1 and a2.
|
boolean |
isSubtype(javax.lang.model.element.AnnotationMirror subAnno,
javax.lang.model.element.AnnotationMirror superAnno)
Computes subtyping as per the subtyping in the qualifier hierarchy structure unless both
annotations are the same.
|
javax.lang.model.element.AnnotationMirror |
leastUpperBound(javax.lang.model.element.AnnotationMirror a1,
javax.lang.model.element.AnnotationMirror a2)
Determines the least upper bound of a1 and a2.
|
int |
numberOfIterationsBeforeWidening()
Returns the number of iterations dataflow should perform before
QualifierHierarchy.widenedUpperBound(AnnotationMirror, AnnotationMirror) is called or -1 if it should never be
called. |
javax.lang.model.element.AnnotationMirror |
widenedUpperBound(javax.lang.model.element.AnnotationMirror newQualifier,
javax.lang.model.element.AnnotationMirror previousQualifier)
If the type hierarchy has an infinite ascending chain, then the dataflow analysis might never
reach a fixed point.
|
addPolyRelations, findBottoms, findLub, findTops, finish, getBottomAnnotation, getBottomAnnotations, getPolymorphicAnnotation, getTopAnnotation, getTopAnnotations, getTypeQualifiers, greatestLowerBoundTypeVariable, isSubtype, isSubtypeTypeVariable, isSubtypeTypeVariable, leastUpperBoundTypeVariable, toString, transitiveClosurecanHaveEmptyAnnotationSet, findAnnotationInHierarchy, findAnnotationInSameHierarchy, getWidth, greatestLowerBound, greatestLowerBounds, greatestLowerBounds, greatestLowerBoundsTypeVariable, isSubtype, isSubtype, isValid, leastUpperBound, leastUpperBounds, leastUpperBounds, leastUpperBoundsTypeVariable, replacePolyAll, updateMappingToMutableSetpublic UpperBoundQualifierHierarchy(MultiGraphQualifierHierarchy.MultiGraphFactory factory)
factory - MultiGraphFactory to use to construct thispublic javax.lang.model.element.AnnotationMirror greatestLowerBound(javax.lang.model.element.AnnotationMirror a1,
javax.lang.model.element.AnnotationMirror a2)
QualifierHierarchyThe two qualifiers have to be from the same qualifier hierarchy. Otherwise, null will be returned.
greatestLowerBound in class MultiGraphQualifierHierarchya1 - first annotationa2 - second annotationpublic javax.lang.model.element.AnnotationMirror leastUpperBound(javax.lang.model.element.AnnotationMirror a1,
javax.lang.model.element.AnnotationMirror a2)
leastUpperBound in class MultiGraphQualifierHierarchypublic javax.lang.model.element.AnnotationMirror widenedUpperBound(javax.lang.model.element.AnnotationMirror newQualifier,
javax.lang.model.element.AnnotationMirror previousQualifier)
QualifierHierarchyQualifierHierarchy.numberOfIterationsBeforeWidening() and
change its return to a positive number.
newQualifier is newest qualifier dataflow computed for some expression and previousQualifier is the qualifier dataflow computed on the last iteration.
If the type hierarchy has no infinite ascending chain, returns the least upper bound of the two annotations.
widenedUpperBound in class QualifierHierarchynewQualifier - new qualifier dataflow computed for some expressionpreviousQualifier - the previous qualifier dataflow computed on the last iterationpublic int numberOfIterationsBeforeWidening()
QualifierHierarchyQualifierHierarchy.widenedUpperBound(AnnotationMirror, AnnotationMirror) is called or -1 if it should never be
called.
Subclasses overriding this method should return some positive number or -1.
numberOfIterationsBeforeWidening in class QualifierHierarchyQualifierHierarchy.widenedUpperBound(AnnotationMirror, AnnotationMirror) is called or -1 if it should
never be called.public boolean isSubtype(javax.lang.model.element.AnnotationMirror subAnno,
javax.lang.model.element.AnnotationMirror superAnno)
isSubtype in class MultiGraphQualifierHierarchysubAnno - the sub qualifiersuperAnno - the super qualifier