Class InitializationAnnotatedTypeFactory.InitializationQualifierHierarchy
java.lang.Object
org.checkerframework.framework.type.ElementQualifierHierarchy
org.checkerframework.framework.type.MostlyNoElementQualifierHierarchy
org.checkerframework.checker.initialization.InitializationAnnotatedTypeFactory.InitializationQualifierHierarchy
- All Implemented Interfaces:
QualifierHierarchy
- Direct Known Subclasses:
NullnessAnnotatedTypeFactory.NullnessQualifierHierarchy
- Enclosing class:
- InitializationAnnotatedTypeFactory<Value extends CFAbstractValue<Value>,
Store extends InitializationStore<Value, Store>, Transfer extends InitializationTransfer<Value, Transfer, Store>, Flow extends CFAbstractAnalysis<Value, Store, Transfer>>
protected abstract class InitializationAnnotatedTypeFactory.InitializationQualifierHierarchy
extends MostlyNoElementQualifierHierarchy
The
QualifierHierarchy
for the initialization type system.
Type systems extending the Initialization Checker should call methods isSubtypeInitialization(javax.lang.model.element.AnnotationMirror, org.checkerframework.framework.util.QualifierKind, javax.lang.model.element.AnnotationMirror, org.checkerframework.framework.util.QualifierKind)
and leastUpperBoundInitialization(javax.lang.model.element.AnnotationMirror, org.checkerframework.framework.util.QualifierKind, javax.lang.model.element.AnnotationMirror, org.checkerframework.framework.util.QualifierKind)
for appropriate qualifiers. See
protected subclass NullnessQualifierHierarchy within class NullnessChecker
for an
example.
-
Field Summary
Fields inherited from class org.checkerframework.framework.type.ElementQualifierHierarchy
bottoms, bottomsMap, kindToElementlessQualifier, qualifierKindHierarchy, tops, topsMap
-
Constructor Summary
ModifierConstructorDescriptionprotected
Create an InitializationQualifierHierarchy. -
Method Summary
Modifier and TypeMethodDescriptionprotected AnnotationMirror
greatestLowerBoundInitialization
(AnnotationMirror anno1, QualifierKind qual1, AnnotationMirror anno2, QualifierKind qual2) Compute the greatest lower bound of two initialization qualifiers.boolean
isSubtypeInitialization
(AnnotationMirror subAnno, QualifierKind subKind, AnnotationMirror superAnno, QualifierKind superKind) Subtype testing for initialization annotations.protected AnnotationMirror
leastUpperBoundInitialization
(AnnotationMirror anno1, QualifierKind qual1, AnnotationMirror anno2, QualifierKind qual2) Compute the least upper bound of two initialization qualifiers.protected TypeMirror
lubTypeFrame
(TypeMirror a, TypeMirror b) Returns the least upper bound of two types.Methods inherited from class org.checkerframework.framework.type.MostlyNoElementQualifierHierarchy
greatestLowerBound, greatestLowerBoundWithElements, isSubtype, isSubtypeWithElements, leastUpperBound, leastUpperBoundWithElements
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 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.checkerframework.framework.type.QualifierHierarchy
getWidth, greatestLowerBounds, isSubtype, leastUpperBounds, numberOfIterationsBeforeWidening, updateMappingToMutableSet, widenedUpperBound
-
Constructor Details
-
InitializationQualifierHierarchy
protected InitializationQualifierHierarchy()Create an InitializationQualifierHierarchy.
-
-
Method Details
-
isSubtypeInitialization
public boolean isSubtypeInitialization(AnnotationMirror subAnno, QualifierKind subKind, AnnotationMirror superAnno, QualifierKind superKind) Subtype testing for initialization annotations. Will return false if either qualifier is not an initialization annotation. Subclasses should override isSubtype and call this method for initialization qualifiers.- Parameters:
subAnno
- subtype annotationsubKind
- subtype kindsuperAnno
- supertype annotationsuperKind
- supertype kind- Returns:
- true if subAnno is a subtype of superAnno in the initialization hierarchy
-
leastUpperBoundInitialization
protected AnnotationMirror leastUpperBoundInitialization(AnnotationMirror anno1, QualifierKind qual1, AnnotationMirror anno2, QualifierKind qual2) Compute the least upper bound of two initialization qualifiers. Returns null if one of the qualifiers is not in the initialization hierarachy. Subclasses should override leastUpperBound and call this method for initialization qualifiers.- Parameters:
anno1
- an initialization qualifierqual1
- a qualifier kindanno2
- an initialization qualifierqual2
- a qualifier kind- Returns:
- the lub of anno1 and anno2
-
lubTypeFrame
Returns the least upper bound of two types.- Parameters:
a
- the first argumentb
- the second argument- Returns:
- the lub of the two arguments
-
greatestLowerBoundInitialization
protected AnnotationMirror greatestLowerBoundInitialization(AnnotationMirror anno1, QualifierKind qual1, AnnotationMirror anno2, QualifierKind qual2) Compute the greatest lower bound of two initialization qualifiers. Returns null if one of the qualifiers is not in the initialization hierarachy. Subclasses should override greatestLowerBound and call this method for initialization qualifiers.- Parameters:
anno1
- an initialization qualifierqual1
- a qualifier kindanno2
- an initialization qualifierqual2
- a qualifier kind- Returns:
- the glb of anno1 and anno2
-