Class UBQualifier
java.lang.Object
org.checkerframework.checker.index.upperbound.UBQualifier
- Direct Known Subclasses:
UBQualifier.LessThanLengthOf
,UBQualifier.UpperBoundLiteralQualifier
,UBQualifier.UpperBoundUnknownQualifier
Abstraction for Upper Bound annotations. This abstract class has 4 subclasses, each of which is a
nested class:
UBQualifier.LessThanLengthOf
, UBQualifier.UpperBoundUnknownQualifier
,
UpperBoundBottomQualifier
, and PolyQualifier
.
LTLengthOf
is modeled by UBQualifier.LessThanLengthOf
. LTEqLengthOf
is equivalent
to @UBQualifier.LessThanLengthOf
with an offset of -1. LTOMLengthOf
is equivalent to @UBQualifier.LessThanLengthOf
with an offset of 1.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
The less-than-length-of qualifier (@LTLengthOf).static class
Represents an integer value that is known at compile time.static class
The top type qualifier. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic UBQualifier
createUBQualifier
(String sequence, String offset) static UBQualifier
createUBQualifier
(List<String> sequences, List<String> offsets) Creates anUBQualifier
from the given sequences and offsets.static UBQualifier
Creates anUBQualifier
from the given sequences and offsets, with the given additional offset.static UBQualifier
createUBQualifier
(AnnotationMirror am, String offset, UpperBoundChecker ubChecker) Create a UBQualifier from the given annotation, with an extra offset.static UBQualifier
createUBQualifier
(AnnotationMirror am, UpperBoundChecker ubChecker) Create a UBQualifier from the given annotation.static UBQualifier
createUBQualifier
(AnnotatedTypeMirror type, AnnotationMirror top, UpperBoundChecker ubChecker) Create an upper bound qualifier.abstract UBQualifier
glb
(UBQualifier other) boolean
hasSequenceWithOffset
(String sequence, int offset) Returns whether or not this qualifier has sequence with the specified offset.boolean
hasSequenceWithOffset
(String sequence, String offset) Returns whether or not this qualifier has sequence with the specified offset.boolean
isBottom()
Returns true if this UBQualifier is the bottom type.boolean
isLessThanLengthOf
(String sequence) Is the value with this qualifier less than the length of sequence?boolean
isLessThanLengthOfAny
(List<String> sequences) Is the value with this qualifier less than the length of any of the sequences?boolean
boolean
isLessThanOrEqualTo
(String sequence) Is the value with this qualifier less than or equal to the length of sequence?boolean
Returns true if this UBQualifier represents a literal integer.boolean
isPoly()
Return true if this is UBQualifier.PolyQualifier.abstract boolean
isSubtype
(UBQualifier superType) boolean
Returns true if this UBQualifier is the top type.abstract UBQualifier
lub
(UBQualifier other) minusOffset
(int value) minusOffset
(Node node, UpperBoundAnnotatedTypeFactory factory) plusOffset
(int value) plusOffset
(Node node, UpperBoundAnnotatedTypeFactory factory) Add the node as an offset to a copy of this qualifier.
-
Constructor Details
-
UBQualifier
public UBQualifier()
-
-
Method Details
-
createUBQualifier
Create a UBQualifier from the given annotation.- Parameters:
am
- the annotation to turn into a UBQualifierubChecker
- used to obtain the fields ofam
- Returns:
- a UBQualifier that represents the same information as the given annotation
-
createUBQualifier
public static UBQualifier createUBQualifier(AnnotationMirror am, String offset, UpperBoundChecker ubChecker) Create a UBQualifier from the given annotation, with an extra offset.- Parameters:
am
- the annotation to turn into a UBQualifieroffset
- the extra offset; may be nullubChecker
- used to obtain the fields ofam
- Returns:
- a UBQualifier that represents the same information as the given annotation (plus an optional offset)
-
createUBQualifier
-
createUBQualifier
public static UBQualifier createUBQualifier(AnnotatedTypeMirror type, AnnotationMirror top, UpperBoundChecker ubChecker) Create an upper bound qualifier.- Parameters:
type
- the type from which to obtain an annotationtop
- the top annotation in a hierarchy; the annotation in this hierarchy will be usedubChecker
- used to obtain the fields ofam
- Returns:
- a new upper bound qualifier
-
createUBQualifier
Creates anUBQualifier
from the given sequences and offsets. The list of sequences may not be empty. If the offsets list is empty, then an offset of 0 is used for each sequence. If the offsets list is not empty, then it must be the same size as sequence.- Parameters:
sequences
- non-empty list of sequencesoffsets
- list of offset, if empty, an offset of 0 is used- Returns:
- an
UBQualifier
for the sequences with the given offsets
-
createUBQualifier
public static UBQualifier createUBQualifier(List<String> sequences, List<String> offsets, String extraOffset) Creates anUBQualifier
from the given sequences and offsets, with the given additional offset. The list of sequences may not be empty. If the offsets list is empty, then an offset of 0 is used for each sequence. If the offsets list is not empty, then it must be the same size as sequence.- Parameters:
sequences
- non-empty list of sequencesoffsets
- list of offset, if empty, an offset of 0 is usedextraOffset
- offset to add to each element of offsets; may be null- Returns:
- an
UBQualifier
for the sequences with the given offsets
-
plusOffset
Add the node as an offset to a copy of this qualifier. If this qualifier is UNKNOWN or BOTTOM, then UNKNOWN is returned. Otherwise, seeUBQualifier.LessThanLengthOf.plusOffset(int)
for an explanation of how node is added as an offset.- Parameters:
node
- a Nodefactory
- an AnnotatedTypeFactory- Returns:
- a copy of this qualifier with node added as an offset
-
plusOffset
-
minusOffset
-
minusOffset
-
isLessThanLengthQualifier
public boolean isLessThanLengthQualifier() -
isLiteral
public boolean isLiteral()Returns true if this UBQualifier represents a literal integer.- Returns:
- true if this UBQualifier represents a literal integer
-
isUnknown
public boolean isUnknown()Returns true if this UBQualifier is the top type.- Returns:
- true if this UBQualifier is the top type
-
isBottom
public boolean isBottom()Returns true if this UBQualifier is the bottom type.- Returns:
- true if this UBQualifier is the bottom type
-
isPoly
Return true if this is UBQualifier.PolyQualifier.- Returns:
- true if this is UBQualifier.PolyQualifier
-
isSubtype
-
lub
-
widenUpperBound
-
glb
-
isLessThanLengthOf
Is the value with this qualifier less than the length of sequence?- Parameters:
sequence
- a String sequence- Returns:
- whether or not the value with this qualifier is less than the length of sequence
-
isLessThanLengthOfAny
Is the value with this qualifier less than the length of any of the sequences?- Parameters:
sequences
- list of sequences- Returns:
- whether or not the value with this qualifier is less than the length of any of the sequences
-
hasSequenceWithOffset
Returns whether or not this qualifier has sequence with the specified offset.- Parameters:
sequence
- sequence expressionoffset
- the offset being looked for- Returns:
- whether or not this qualifier has sequence with the specified offset
-
hasSequenceWithOffset
Returns whether or not this qualifier has sequence with the specified offset.- Parameters:
sequence
- sequence expressionoffset
- the offset being looked for- Returns:
- whether or not this qualifier has sequence with the specified offset
-
isLessThanOrEqualTo
Is the value with this qualifier less than or equal to the length of sequence?- Parameters:
sequence
- a String sequence- Returns:
- whether or not the value with this qualifier is less than or equal to the length of sequence
-