Consider the following example, from the Index Checker's regression tests:
@EnsuresLTLengthOf(value = "end", targetValue = "array", offset = "#1 - 1")
public void shiftIndex(@NonNegative int x) {
int newEnd = end - x;
if (newEnd < 0) throw new RuntimeException();
end = newEnd;
}
where end is annotated as @NonNegative @LTEqLengthOf("array") int end;
This method guarantees that end has type @LTLengthOf(value="array", offset="x -
1") after the method returns. This is useful in cases like this one:
public void useShiftIndex(@NonNegative int x) {
// :: error: (argument)
Arrays.fill(array, end, end + x, null);
shiftIndex(x);
Arrays.fill(array, end, end + x, null);
}
The first call to Arrays.fill is rejected (hence the comment about an error). But, after
calling shiftIndex(x), end has an annotation that allows the end + x to
be accepted as @LTLengthOf("array").
EnsuresLTLengthOfIf, LTLengthOf
| Modifier and Type | Class and Description |
|---|---|
| public static @interface | EnsuresLTLengthOf.List
A wrapper annotation that makes the |
| Modifier and Type | Method and Description |
|---|---|
| public String[] | Returns: the offset expressionsThis expression plus each of the value expressions is less than the length of the sequence on successful method termination. |
| public String[] | targetValue()
Sequences, each of which is longer than the each of the expressions' value on successful method termination. |
| public String[] | value()
The Java expressions that are less than the length of the given sequences on successful method termination. |
| offset | back to summary |
|---|---|
| public String[] offset() This expression plus each of the value expressions is less than the length of the sequence on
successful method termination. The
| |
| targetValue | back to summary |
|---|---|
| public String[] targetValue() Sequences, each of which is longer than the each of the expressions' value on successful method termination.
| |
| value | back to summary |
|---|---|
| public String[] value() The Java expressions that are less than the length of the given sequences on successful method termination.
| |
EnsuresLTLengthOf annotation repeatable.
Programmers generally do not need to write this. It is created by Java when a programmer
writes more than one EnsuresLTLengthOf annotation at the same location.
| Modifier and Type | Method and Description |
|---|---|
| public EnsuresLTLengthOf[] |
| value | back to summary |
|---|---|
| public EnsuresLTLengthOf[] value() Return the repeatable annotations.
| |