Class QualifierDefaults
java.lang.Object
org.checkerframework.framework.util.defaults.QualifierDefaults
Determines the default qualifiers on a type. Default qualifiers are specified via the
DefaultQualifier annotation.- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static enumSpecifies whether the type variable or wildcard has an explicit upper bound (UPPER), an explicit lower bound (LOWER), or no explicit bounds (UNBOUNDED).protected classA default applier element. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final ExecutableElementThe value() element/field of a @DefaultQualifier.List annotation.protected final ExecutableElementThe locations() element/field of a @DefaultQualifier annotation.protected final ExecutableElementThe value() element/field of a @DefaultQualifier annotation.protected final Map<Element,QualifierDefaults.BoundType> Mapping from an Element to the bound type.static final List<TypeUseLocation>CLIMB locations whose standard default is bottom for a given type system.static final List<TypeUseLocation>CLIMB locations whose standard default is top for a given type system.static final List<TypeUseLocation>Standard unchecked default locations that should be bottom.static final List<TypeUseLocation>Standard unchecked default locations that should be top. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCheckedCodeDefault(AnnotationMirror absoluteDefaultAnno, TypeUseLocation location) Sets the default annotations.voidaddCheckedCodeDefaults(AnnotationMirror absoluteDefaultAnno, TypeUseLocation[] locations) voidAdd standard CLIMB defaults that do not conflict with previously added defaults.voidaddElementDefault(Element elem, AnnotationMirror elementDefaultAnno, TypeUseLocation location) Sets the default annotations for a certain Element.voidaddUncheckedCodeDefault(AnnotationMirror uncheckedDefaultAnno, TypeUseLocation location) Add a default annotation for unchecked elements.voidaddUncheckedCodeDefaults(AnnotationMirror absoluteDefaultAnno, TypeUseLocation[] locations) Sets the default annotation for unchecked elements, with specific locations.voidAdd standard unchecked defaults that do not conflict with previously added defaults.voidannotate(Tree tree, AnnotatedTypeMirror type) Applies default annotations to a type given aTree.voidannotate(Element elt, AnnotatedTypeMirror type) Applies default annotations to a type obtained from anElement.booleanapplyConservativeDefaults(Element annotationScope) Given an element, returns whether the conservative default should be applied for it.protected QualifierDefaults.DefaultApplierElementcreateDefaultApplierElement(AnnotatedTypeFactory atypeFactory, Element annotationScope, AnnotatedTypeMirror type, boolean applyToTypeVar) Returns the BoundType of annotatedWildcard.booleanCheck that a default with TypeUseLocation OTHERWISE or ALL is specified.toString()static List<TypeUseLocation>Returns an array of locations that are valid for the unchecked value defaults.
-
Field Details
-
defaultQualifierValueElement
The value() element/field of a @DefaultQualifier annotation. -
defaultQualifierLocationsElement
The locations() element/field of a @DefaultQualifier annotation. -
defaultQualifierListValueElement
The value() element/field of a @DefaultQualifier.List annotation. -
elementToBoundType
Mapping from an Element to the bound type. -
STANDARD_CLIMB_DEFAULTS_TOP
CLIMB locations whose standard default is top for a given type system. -
STANDARD_CLIMB_DEFAULTS_BOTTOM
CLIMB locations whose standard default is bottom for a given type system. -
STANDARD_UNCHECKED_DEFAULTS_TOP
Standard unchecked default locations that should be top. -
STANDARD_UNCHECKED_DEFAULTS_BOTTOM
Standard unchecked default locations that should be bottom.
-
-
Constructor Details
-
QualifierDefaults
- Parameters:
elements- interface to Element data in the current processing environmentatypeFactory- an annotation factory, used to get annotations by name
-
-
Method Details
-
validLocationsForUncheckedCodeDefaults
Returns an array of locations that are valid for the unchecked value defaults. These are simply by syntax, since an entire file is typechecked, it is not possible for local variables to be unchecked. -
toString
-
hasDefaultsForCheckedCode
public boolean hasDefaultsForCheckedCode()Check that a default with TypeUseLocation OTHERWISE or ALL is specified.- Returns:
- whether we found a Default with location OTHERWISE or ALL
-
addUncheckedStandardDefaults
public void addUncheckedStandardDefaults()Add standard unchecked defaults that do not conflict with previously added defaults. -
addClimbStandardDefaults
public void addClimbStandardDefaults()Add standard CLIMB defaults that do not conflict with previously added defaults. -
addCheckedCodeDefault
Sets the default annotations. A programmer may override this by writing the @DefaultQualifier annotation on an element. -
addUncheckedCodeDefault
public void addUncheckedCodeDefault(AnnotationMirror uncheckedDefaultAnno, TypeUseLocation location) Add a default annotation for unchecked elements.- Parameters:
uncheckedDefaultAnno- the default annotation mirrorlocation- the type use location
-
addUncheckedCodeDefaults
public void addUncheckedCodeDefaults(AnnotationMirror absoluteDefaultAnno, TypeUseLocation[] locations) Sets the default annotation for unchecked elements, with specific locations. -
addCheckedCodeDefaults
public void addCheckedCodeDefaults(AnnotationMirror absoluteDefaultAnno, TypeUseLocation[] locations) -
addElementDefault
public void addElementDefault(Element elem, AnnotationMirror elementDefaultAnno, TypeUseLocation location) Sets the default annotations for a certain Element.- Parameters:
elem- the scope to set the default withinelementDefaultAnno- the default to setlocation- the location to apply the default to
-
annotate
Applies default annotations to a type obtained from anElement.- Parameters:
elt- the element from which the type was obtainedtype- the type to annotate
-
annotate
Applies default annotations to a type given aTree.- Parameters:
tree- the tree from which the type was obtainedtype- the type to annotate
-
applyConservativeDefaults
Given an element, returns whether the conservative default should be applied for it. Handles elements from bytecode or source code.- Parameters:
annotationScope- the element that the conservative default might apply to- Returns:
- whether the conservative default applies to the given element
-
createDefaultApplierElement
protected QualifierDefaults.DefaultApplierElement createDefaultApplierElement(AnnotatedTypeFactory atypeFactory, Element annotationScope, AnnotatedTypeMirror type, boolean applyToTypeVar) -
getWildcardBoundType
public QualifierDefaults.BoundType getWildcardBoundType(AnnotatedTypeMirror.AnnotatedWildcardType wildcardType) Returns the BoundType of annotatedWildcard. If it is unbounded, use the type parameter to which its an argument.- Parameters:
wildcardType- the annotated wildcard type- Returns:
- the BoundType of annotatedWildcard. If it is unbounded, use the type parameter to which its an argument
-