Question

i besoin de mettre en place une postcondition qui garantit à null retour si size_ est 0. Basé sur

 if(size_ == 0)
  return null;

Comment puis-je faire cela en JML? des idées? A la suite ne fonctionne pas:

//@ ensures size_ == null ==> \return true;

Merci à l'avance

Était-ce utile?

La solution

Essayez

//@ ensures size_ == null ==> \result == true;

Exemple:

//@ ensures size_ == null ==> \result == true;
public boolean sizeUndefined() {
    if (size_ == null)
        return true;

    return size_.length() > 0;
}

vous pouvez simplement écrire aussi comme ceci:

//@ ensures size_ == null ==> \result;

Voici la documentation \result :

  

3.2.14 \result   Au sein d'une post-condition normale ou une cible de modification d'une méthode non-vide, l'identifiant spécial \ résultat est une expression de spécification dont le type est le type de retour de la méthode. Il représente la valeur renvoyée par la méthode. \ Résultat est permis seulement dans une assure, also_ensures, modifie ou also_modifies pragma qui modifie la déclaration d'une méthode non nulle.

Autres conseils

Tout d'abord: quel type est size_, Object ou primitive(int)

En second lieu, ce que le type de retour de la méthode? Object ou primitive(boolean)?

Vous ne pouvez pas comparer un type primitif à null, ou null de retour où est censé être retourné un type primitif. Si nous supposons size_ est int et le retour est boolean alors la post-condition serait

//@ ensures size_ == 0 ==> \result;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top