Class AbstractSetInclusionQualifierHierarchy
java.lang.Object
org.checkerframework.framework.type.QualifierHierarchy
org.checkerframework.framework.type.ElementQualifierHierarchy
org.checkerframework.framework.type.MostlyNoElementQualifierHierarchy
org.checkerframework.framework.type.AbstractSetInclusionQualifierHierarchy
- Direct Known Subclasses:
SubtypeIsSubsetQualifierHierarchy,SubtypeIsSupersetQualifierHierarchy
@AnnotatedFor("nullness")
public abstract class AbstractSetInclusionQualifierHierarchy
extends MostlyNoElementQualifierHierarchy
A
QualifierHierarchy where, when a qualifier has
arguments, the subtype relation is determined by a subset or superset test on the elements
(arguments). Each qualifier that has elements must have exactly one element, named value,
whose type is String[].
This assumes that if the lub or glb of two qualifier kinds has elements, then it is one of the
two qualifier kinds. Otherwise, computing the lub or glb throws BugInCF.
- See Also:
-
Field Summary
Fields inherited from class org.checkerframework.framework.type.ElementQualifierHierarchy
bottoms, bottomsMap, kindToElementlessQualifier, qualifierKindHierarchy, tops, topsMapFields inherited from class org.checkerframework.framework.type.QualifierHierarchy
atypeFactory -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractSetInclusionQualifierHierarchy(Collection<Class<? extends Annotation>> qualifierClasses, ProcessingEnvironment processingEnv, GenericAnnotatedTypeFactory<?, ?, ?, ?> atypeFactory, boolean subtypeIsSubset) Creates an AbstractSetInclusionQualifierHierarchy. -
Method Summary
Modifier and TypeMethodDescriptionprotected AnnotationMirrorgreatestLowerBoundWithElements(AnnotationMirror a1, QualifierKind qualifierKind1, AnnotationMirror a2, QualifierKind qualifierKind2, QualifierKind glbKind) Returns the greatest lower bound ofa1anda2in cases where the glb ofqualifierKind1andqualifierKind2is a qualifier kind that has elements.protected booleanisSubtypeWithElements(AnnotationMirror subAnno, QualifierKind subKind, AnnotationMirror superAnno, QualifierKind superKind) Returns true ifsubAnnois a subtype ofsuperAnno.protected AnnotationMirrorleastUpperBoundWithElements(AnnotationMirror a1, QualifierKind qualifierKind1, AnnotationMirror a2, QualifierKind qualifierKind2, QualifierKind lubKind) Returns the least upper bound ofa1anda2in cases where the lub ofqualifierKind1andqualifierKind2is a qualifier kind that has elements.Methods inherited from class org.checkerframework.framework.type.MostlyNoElementQualifierHierarchy
greatestLowerBoundQualifiers, isSubtypeQualifiers, leastUpperBoundQualifiersMethods inherited from class org.checkerframework.framework.type.ElementQualifierHierarchy
createBottomsMap, createElementlessQualifierMap, createQualifierKindHierarchy, createTopsMap, findAnnotationInHierarchy, findAnnotationInSameHierarchy, getBottomAnnotation, getBottomAnnotations, getPolymorphicAnnotation, getQualifierKind, getQualifierKind, getTopAnnotation, getTopAnnotations, isPolymorphicQualifier, isValidMethods inherited from class org.checkerframework.framework.type.QualifierHierarchy
assertSameSize, assertSameSize, canHaveEmptyAnnotationSet, getWidth, greatestLowerBoundQualifiersOnly, greatestLowerBoundShallow, greatestLowerBoundsQualifiersOnly, greatestLowerBoundsQualifiersOnly, greatestLowerBoundsShallow, isSubtypeQualifiersOnly, isSubtypeQualifiersOnly, isSubtypeShallow, isSubtypeShallow, isSubtypeShallow, isSubtypeShallow, isTop, leastUpperBoundQualifiersOnly, leastUpperBoundShallow, leastUpperBoundsQualifiersOnly, leastUpperBoundsQualifiersOnly, leastUpperBoundsShallow, numberOfIterationsBeforeWidening, updateMappingToMutableSet, widenedUpperBound
-
Constructor Details
-
AbstractSetInclusionQualifierHierarchy
protected AbstractSetInclusionQualifierHierarchy(Collection<Class<? extends Annotation>> qualifierClasses, ProcessingEnvironment processingEnv, GenericAnnotatedTypeFactory<?, ?, ?, ?> atypeFactory, boolean subtypeIsSubset) Creates an AbstractSetInclusionQualifierHierarchy.- Parameters:
qualifierClasses- classes of annotations that are the qualifiers for this hierarchyprocessingEnv- processing environmentatypeFactory- the associated type factorysubtypeIsSubset- whether subtyping follows the subset relation rather than the superset relation
-
-
Method Details
-
isSubtypeWithElements
protected boolean isSubtypeWithElements(AnnotationMirror subAnno, QualifierKind subKind, AnnotationMirror superAnno, QualifierKind superKind) Description copied from class:MostlyNoElementQualifierHierarchyReturns true ifsubAnnois a subtype ofsuperAnno. BothsubAnnoandsuperAnnoare annotations with elements.subKindis a sub qualifier kind ofsuperKind.- Specified by:
isSubtypeWithElementsin classMostlyNoElementQualifierHierarchy- Parameters:
subAnno- possible subtype annotation; has elementssubKind- the QualifierKind ofsubAnnosuperAnno- possible super annotation; has elementssuperKind- the QualifierKind ofsuperAnno- Returns:
- true if
subAnnois a subtype ofsuperAnno
-
leastUpperBoundWithElements
protected AnnotationMirror leastUpperBoundWithElements(AnnotationMirror a1, QualifierKind qualifierKind1, AnnotationMirror a2, QualifierKind qualifierKind2, QualifierKind lubKind) Description copied from class:MostlyNoElementQualifierHierarchyReturns the least upper bound ofa1anda2in cases where the lub ofqualifierKind1andqualifierKind2is a qualifier kind that has elements. If the lub ofqualifierKind1andqualifierKind2does not have elements, thenQualifierHierarchy.leastUpperBoundShallow(AnnotationMirror, TypeMirror, AnnotationMirror, TypeMirror)returns the correctAnnotationMirrorwithout calling this method.- Specified by:
leastUpperBoundWithElementsin classMostlyNoElementQualifierHierarchy- Parameters:
a1- first annotationqualifierKind1- QualifierKind fora1a2- second annotationqualifierKind2- QualifierKind fora2lubKind- the kind of the lub ofqualifierKind1andqualifierKind2- Returns:
- the least upper bound of
a1anda2
-
greatestLowerBoundWithElements
protected AnnotationMirror greatestLowerBoundWithElements(AnnotationMirror a1, QualifierKind qualifierKind1, AnnotationMirror a2, QualifierKind qualifierKind2, QualifierKind glbKind) Description copied from class:MostlyNoElementQualifierHierarchyReturns the greatest lower bound ofa1anda2in cases where the glb ofqualifierKind1andqualifierKind2is a qualifier kind that has elements. If the glb ofqualifierKind1andqualifierKind2does not have elements, thenQualifierHierarchy.greatestLowerBoundShallow(AnnotationMirror, TypeMirror, AnnotationMirror, TypeMirror)returns the correctAnnotationMirrorwithout calling this method.- Specified by:
greatestLowerBoundWithElementsin classMostlyNoElementQualifierHierarchy- Parameters:
a1- first annotationqualifierKind1- QualifierKind fora1a2- second annotationqualifierKind2- QualifierKind fora2glbKind- the kind of the glb ofqualifierKind1andqualifierKind2- Returns:
- the greatest lower bound between
a1anda2
-