Class SubtypeIsSupersetQualifierHierarchy
- java.lang.Object
-
- org.checkerframework.framework.type.QualifierHierarchy
-
- org.checkerframework.framework.type.ElementQualifierHierarchy
-
- org.checkerframework.framework.type.MostlyNoElementQualifierHierarchy
-
- org.checkerframework.framework.type.SubtypeIsSupersetQualifierHierarchy
-
@AnnotatedFor("nullness") public class SubtypeIsSupersetQualifierHierarchy extends MostlyNoElementQualifierHierarchy
AQualifierHierarchy
where, when a qualifier has arguments, the subtype relation is determined by a superset test on the elements (arguments). The elements must be strings.This assumes that if the lub or glb of two qualifiers has elements, then both of the arguments had the same kind as the result does.
-
-
Field Summary
-
Fields inherited from class org.checkerframework.framework.type.ElementQualifierHierarchy
bottoms, bottomsMap, kindToElementlessQualifier, qualifierKindHierarchy, tops, topsMap
-
Fields inherited from class org.checkerframework.framework.type.QualifierHierarchy
atypeFactory
-
-
Constructor Summary
Constructors Constructor Description SubtypeIsSupersetQualifierHierarchy(java.util.Collection<java.lang.Class<? extends java.lang.annotation.Annotation>> qualifierClasses, javax.annotation.processing.ProcessingEnvironment processingEnv, GenericAnnotatedTypeFactory<?,?,?,?> atypeFactory)
Creates a SubtypeIsSupersetQualifierHierarchy from the given classes.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected javax.lang.model.element.AnnotationMirror
greatestLowerBoundWithElements(javax.lang.model.element.AnnotationMirror a1, QualifierKind qualifierKind1, javax.lang.model.element.AnnotationMirror a2, QualifierKind qualifierKind2, QualifierKind glbKind)
Returns the greatest lower bound ofa1
anda2
in cases where the glb ofqualifierKind1
andqualifierKind2
is a qualifier kind that has elements.protected boolean
isSubtypeWithElements(javax.lang.model.element.AnnotationMirror subAnno, QualifierKind subKind, javax.lang.model.element.AnnotationMirror superAnno, QualifierKind superKind)
Returns true ifsubAnno
is a subtype ofsuperAnno
.protected javax.lang.model.element.AnnotationMirror
leastUpperBoundWithElements(javax.lang.model.element.AnnotationMirror a1, QualifierKind qualifierKind1, javax.lang.model.element.AnnotationMirror a2, QualifierKind qualifierKind2, QualifierKind lubKind)
Returns the least upper bound ofa1
anda2
in cases where the lub ofqualifierKind1
andqualifierKind2
is a qualifier kind that has elements.-
Methods inherited from class org.checkerframework.framework.type.MostlyNoElementQualifierHierarchy
greatestLowerBoundQualifiers, isSubtypeQualifiers, leastUpperBoundQualifiers
-
Methods inherited from class org.checkerframework.framework.type.ElementQualifierHierarchy
createBottomsMap, createElementlessQualifierMap, createQualifierKindHierarchy, createTopsMap, findAnnotationInHierarchy, findAnnotationInSameHierarchy, getBottomAnnotation, getBottomAnnotations, getPolymorphicAnnotation, getQualifierKind, getQualifierKind, getTopAnnotation, getTopAnnotations, isPolymorphicQualifier, isValid
-
Methods inherited from class org.checkerframework.framework.type.QualifierHierarchy
assertSameSize, assertSameSize, canHaveEmptyAnnotationSet, getWidth, greatestLowerBoundQualifiersOnly, greatestLowerBoundShallow, greatestLowerBoundsShallow, isSubtypeQualifiersOnly, isSubtypeShallow, isSubtypeShallow, isSubtypeShallow, isSubtypeShallow, leastUpperBoundQualifiersOnly, leastUpperBoundShallow, leastUpperBoundsShallow, numberOfIterationsBeforeWidening, updateMappingToMutableSet, widenedUpperBound
-
-
-
-
Constructor Detail
-
SubtypeIsSupersetQualifierHierarchy
public SubtypeIsSupersetQualifierHierarchy(java.util.Collection<java.lang.Class<? extends java.lang.annotation.Annotation>> qualifierClasses, javax.annotation.processing.ProcessingEnvironment processingEnv, GenericAnnotatedTypeFactory<?,?,?,?> atypeFactory)
Creates a SubtypeIsSupersetQualifierHierarchy from the given classes.- Parameters:
qualifierClasses
- classes of annotations that are the qualifiers for this hierarchyprocessingEnv
- processing environmentatypeFactory
- the associated type factory
-
-
Method Detail
-
isSubtypeWithElements
protected boolean isSubtypeWithElements(javax.lang.model.element.AnnotationMirror subAnno, QualifierKind subKind, javax.lang.model.element.AnnotationMirror superAnno, QualifierKind superKind)
Description copied from class:MostlyNoElementQualifierHierarchy
Returns true ifsubAnno
is a subtype ofsuperAnno
. BothsubAnno
andsuperAnno
are annotations with elements.subKind
is a sub qualifier kind ofsuperKind
.- Specified by:
isSubtypeWithElements
in classMostlyNoElementQualifierHierarchy
- Parameters:
subAnno
- possible subtype annotation; has elementssubKind
- the QualifierKind ofsubAnno
superAnno
- possible super annotation; has elementssuperKind
- the QualifierKind ofsuperAnno
- Returns:
- true if
subAnno
is a subtype ofsuperAnno
-
leastUpperBoundWithElements
protected javax.lang.model.element.AnnotationMirror leastUpperBoundWithElements(javax.lang.model.element.AnnotationMirror a1, QualifierKind qualifierKind1, javax.lang.model.element.AnnotationMirror a2, QualifierKind qualifierKind2, QualifierKind lubKind)
Description copied from class:MostlyNoElementQualifierHierarchy
Returns the least upper bound ofa1
anda2
in cases where the lub ofqualifierKind1
andqualifierKind2
is a qualifier kind that has elements. If the lub ofqualifierKind1
andqualifierKind2
does not have elements, thenQualifierHierarchy.leastUpperBoundShallow(AnnotationMirror, TypeMirror, AnnotationMirror, TypeMirror)
returns the correctAnnotationMirror
without calling this method.- Specified by:
leastUpperBoundWithElements
in classMostlyNoElementQualifierHierarchy
- Parameters:
a1
- first annotationqualifierKind1
- QualifierKind fora1
a2
- second annotationqualifierKind2
- QualifierKind fora2
lubKind
- the kind of the lub ofqualifierKind1
andqualifierKind2
- Returns:
- the least upper bound of
a1
anda2
-
greatestLowerBoundWithElements
protected javax.lang.model.element.AnnotationMirror greatestLowerBoundWithElements(javax.lang.model.element.AnnotationMirror a1, QualifierKind qualifierKind1, javax.lang.model.element.AnnotationMirror a2, QualifierKind qualifierKind2, QualifierKind glbKind)
Description copied from class:MostlyNoElementQualifierHierarchy
Returns the greatest lower bound ofa1
anda2
in cases where the glb ofqualifierKind1
andqualifierKind2
is a qualifier kind that has elements. If the glb ofqualifierKind1
andqualifierKind2
does not have elements, thenQualifierHierarchy.greatestLowerBoundShallow(AnnotationMirror, TypeMirror, AnnotationMirror, TypeMirror)
returns the correctAnnotationMirror
without calling this method.- Specified by:
greatestLowerBoundWithElements
in classMostlyNoElementQualifierHierarchy
- Parameters:
a1
- first annotationqualifierKind1
- QualifierKind fora1
a2
- second annotationqualifierKind2
- QualifierKind fora2
- Returns:
- the greatest lower bound between
a1
anda2
-
-