1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
import org.checkerframework.checker.nullness.qual.RequiresNonNull;
public class Issue2470 {
static class Example {
@MonotonicNonNull String s;
public Example() {}
@EnsuresNonNull("this.s")
public Example setS(String s1) {
this.s = s1;
return this;
}
@RequiresNonNull("this.s")
public void print() {
System.out.println(this.s.toString());
}
}
static void buggy() {
new Example()
// :: error: (contracts.precondition.not.satisfied)
.print();
}
static void ok() {
new Example().setS("test").print();
}
}
|