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.

0 ответов

Другие вопросы по тегам