class T1 {
int x;
//@ requires b;
//@ ensures this.x == 0;
T1() {
x = 0;
}
//@ requires b;
//@ requires (\forall T1 t; t.x != 0);
//@ ensures \result != null && \result.x == 0;
//@ ensures \fresh(\result); // line (a)
static T1 m() {
return new T1();
}
//@ requires b;
//@ requires (\forall T1 t; t.x != 0);
static void p() {
T1 t = m();
int i = 1/t.x; // Warning here depends on line (a) above
}
//@ requires \nonnullelements(args);
//@ modifies b;
public static void main(String[] args) {
if (!b) {
b = true;
p();
}
}
static boolean b = false;
//@ invariant !b ==> (x == x+1);
}