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
Modifier and TypeClassDescriptionprotected static enum
Specifies whether the type variable or wildcard has an explicit upper bound (UPPER), an explicit lower bound (LOWER), or no explicit bounds (UNBOUNDED).protected class
A default applier element. -
Field Summary
Modifier and TypeFieldDescriptionprotected final ExecutableElement
The value() element/field of a @DefaultQualifier.List annotation.protected final ExecutableElement
The locations() element/field of a @DefaultQualifier annotation.protected final ExecutableElement
The 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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addCheckedCodeDefault
(AnnotationMirror absoluteDefaultAnno, TypeUseLocation location) Adds a default annotation.void
addCheckedCodeDefaults
(AnnotationMirror absoluteDefaultAnno, TypeUseLocation[] locations) void
Add standard CLIMB defaults that do not conflict with previously added defaults.void
addElementDefault
(Element elem, AnnotationMirror elementDefaultAnno, TypeUseLocation location) Sets the default annotations for a certain Element.void
addUncheckedCodeDefault
(AnnotationMirror uncheckedDefaultAnno, TypeUseLocation location) Add a default annotation for unchecked elements.void
addUncheckedCodeDefaults
(AnnotationMirror absoluteDefaultAnno, TypeUseLocation[] locations) Sets the default annotation for unchecked elements, with specific locations.void
Add standard unchecked defaults that do not conflict with previously added defaults.void
annotate
(Tree tree, AnnotatedTypeMirror type) Applies default annotations to a type given aTree
.void
annotate
(Element elt, AnnotatedTypeMirror type) Applies default annotations to a type obtained from anElement
.boolean
applyConservativeDefaults
(Element annotationScope) Given an element, returns whether the conservative default should be applied for it.protected QualifierDefaults.DefaultApplierElement
createDefaultApplierElement
(AnnotatedTypeFactory atypeFactory, Element annotationScope, AnnotatedTypeMirror type, boolean applyToTypeVar) Returns the BoundType of annotatedWildcard.boolean
Check 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
Adds a default annotation. A programmer may override this by writing the @DefaultQualifier annotation on an element.- Parameters:
absoluteDefaultAnno
- the default annotation mirrorlocation
- the type use location
-
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
-