JML не может поймать нарушенное предусловие
В моем классе Test у меня есть массив из пяти int с именем a и метод addOne(int index), который добавляет один к выбранной ячейке. Я написал в JML простое предварительное условие для управления индексом, переданным методу. Затем я пытаюсь нарушить это предварительное условие, вызывая метод с отрицательным индексом, и JML не может отловить эту ошибку. В чем дело?
Это тестовый класс:
public class Test {
public int[] a;
public Test(){
a = new int[]{1,1,1,1,1};
}
//@ requires index>=0 && index<5;
public void addOne(int index){
a[index]+=1;
}
}
И это главное:
public static void main(String[] args) {
Test t = new Test();
t.addOne(-2);
}
Это выдает исключение: java.lang.ArrayIndexOutOfBoundsException: -2.
С любым сообщением JML.