import org.checkerframework.checker.index.qual.LTEqLengthOf;
import org.checkerframework.checker.index.qual.LTLengthOf;
import org.checkerframework.checker.index.qual.UpperBoundBottom;
// @skip-test until we bring list support back
class ListSupport {
void indexOf(List<Integer> list) {
int index = list.indexOf(0);
@LTLengthOf("list") int i = index;
//:: error: (assignment.type.incompatible)
@UpperBoundBottom int i2 = index;
}
void lastIndexOf(List<Integer> list) {
int index = list.lastIndexOf(0);
@LTLengthOf("list") int i = index;
//:: error: (assignment.type.incompatible)
@UpperBoundBottom int i2 = index;
}
void subList(
List<Integer> list, @LTLengthOf("#1") int index, @LTEqLengthOf("#1") int endIndex) {
List<Integer> list2 = list.subList(index, endIndex);
// start index must be strictly lessthanlength
//:: error: (argument.type.incompatible)
list2 = list.subList(endIndex, endIndex);
// edindex must be less than or equal to Length
//:: error: (argument.type.incompatible)
list2 = list.subList(index, 28);
}
void size(List<Integer> list) {
int i = list.size();
@LTEqLengthOf("list") int k = i;
//:: error: (assignment.type.incompatible)
@LTLengthOf("list") int m = i;
}
void clear(List<Integer> list) {
int lessThanLength = list.size() - 1;
int lessThanOrEq = list.size();
list.get(lessThanLength);
list.clear();
//:: error: (list.access.unsafe.high)
list.get(lessThanLength);
//:: error: (assignment.type.incompatible)
@LTEqLengthOf("list") int m = lessThanLength;
//:: error: (assignment.type.incompatible)
m = lessThanOrEq;
//:: error: (assignment.type.incompatible)
@LTLengthOf("list") int i = lessThanLength;
}
}