Si la déclaration avec retour en JML
-
09-10-2019 - |
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
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;