class T {
int x;
//@ requires b;
//@ ensures this.x == 0;
T() {
x = 0;
}
//@ requires b;
//@ requires (\forall T t; t.x != 0);
//@ ensures \result != null && \result.x == 0;
static T m() {
return new T();
}
//@ requires b;
//@ requires (\forall T t; t.x != 0);
static void p() {
T t = m();
int i = 1/t.x; // will divide by 0, but no warning
}
//@ 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);
}