Class CFAbstractValue.ValueLub
java.lang.Object
CFAbstractValue<V>.AnnotationSetCombiner
org.checkerframework.framework.flow.CFAbstractValue.ValueLub
- Enclosing class:
- CFAbstractValue<V extends CFAbstractValue<V>>
Computes the least upper bound or, if
shouldWiden is true, an upper bounds of two sets
of annotations. The computation accounts for sets that are missing annotations in hierarchies.-
Constructor Summary
ConstructorsConstructorDescriptionValueLub(boolean shouldWiden) Creates aCFAbstractValue<V extends CFAbstractValue<V>>.ValueLub. -
Method Summary
Modifier and TypeMethodDescriptionprotected @Nullable AnnotationMirrorcombineNoAnnotations(AnnotatedTypeMirror.AnnotatedTypeVariable aAtv, AnnotatedTypeMirror.AnnotatedTypeVariable bAtv, AnnotationMirror top, boolean canCombinedSetBeMissingAnnos) Returns the primary annotation that result from of combining the twoAnnotatedTypeMirror.AnnotatedTypeVariable.protected @Nullable AnnotationMirrorcombineOneAnnotation(AnnotationMirror annotation, AnnotatedTypeMirror.AnnotatedTypeVariable typeVar, AnnotationMirror top, boolean canCombinedSetBeMissingAnnos) Returns the result of combiningannotationwithtypeVar.protected @Nullable AnnotationMirrorReturns the result of combining the two annotations.Methods inherited from class org.checkerframework.framework.flow.CFAbstractValue.AnnotationSetCombiner
combineSets
-
Constructor Details
-
ValueLub
public ValueLub(boolean shouldWiden) Creates aCFAbstractValue<V extends CFAbstractValue<V>>.ValueLub.- Parameters:
shouldWiden- if true, this class computes an upper bound
-
-
Method Details
-
combineTwoAnnotations
protected @Nullable AnnotationMirror combineTwoAnnotations(AnnotationMirror a, AnnotationMirror b, AnnotationMirror top) Description copied from class:CFAbstractValue.AnnotationSetCombinerReturns the result of combining the two annotations. This method is called when an annotation exists in both sets for the hierarchy whose top istop.- Specified by:
combineTwoAnnotationsin classCFAbstractValue<V extends CFAbstractValue<V>>.AnnotationSetCombiner- Parameters:
a- an annotation in the hierarchyb- an annotation in the hierarchytop- the top annotation in the hierarchy- Returns:
- the result of combining the two annotations or null if no combination exists
-
combineNoAnnotations
protected @Nullable AnnotationMirror combineNoAnnotations(AnnotatedTypeMirror.AnnotatedTypeVariable aAtv, AnnotatedTypeMirror.AnnotatedTypeVariable bAtv, AnnotationMirror top, boolean canCombinedSetBeMissingAnnos) Description copied from class:CFAbstractValue.AnnotationSetCombinerReturns the primary annotation that result from of combining the twoAnnotatedTypeMirror.AnnotatedTypeVariable. If the result has not primary annotation, thenullis returned. This method is called when no annotation exists in either sets for the hierarchy whose top istop.- Specified by:
combineNoAnnotationsin classCFAbstractValue<V extends CFAbstractValue<V>>.AnnotationSetCombiner- Parameters:
aAtv- a type variable that does not have a primary annotation intophierarchybAtv- a type variable that does not have a primary annotation intophierarchytop- the top annotation in the hierarchycanCombinedSetBeMissingAnnos- whether or not- Returns:
- the result of combining the two type variables, which may be null
-
combineOneAnnotation
protected @Nullable AnnotationMirror combineOneAnnotation(AnnotationMirror annotation, AnnotatedTypeMirror.AnnotatedTypeVariable typeVar, AnnotationMirror top, boolean canCombinedSetBeMissingAnnos) Description copied from class:CFAbstractValue.AnnotationSetCombinerReturns the result of combiningannotationwithtypeVar.This is called when an annotation exists for the hierarchy in one set, but not the other.
- Specified by:
combineOneAnnotationin classCFAbstractValue<V extends CFAbstractValue<V>>.AnnotationSetCombiner- Parameters:
annotation- an annotationtypeVar- a type variable that does not have a primary annotation in the hierarchytop- the top annotation of the hierarchycanCombinedSetBeMissingAnnos- whether or not- Returns:
- the result of combining
annotationwithtypeVar
-