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
|
import org.checkerframework.checker.nullness.qual.Nullable;
import org.checkerframework.checker.nullness.qual.RequiresNonNull;
public class SkipUses2 {
static class SkipMe {
static @Nullable Object f;
@RequiresNonNull("f")
static void foo() {}
}
static class DontSkip {
static @Nullable Object f;
@RequiresNonNull("f")
static @Nullable Object foo() {
return null;
}
}
static class Main {
void bar(boolean b) {
SkipMe.f = null;
SkipMe.foo();
DontSkip.f = null;
// :: error: (contracts.precondition.not.satisfied)
DontSkip.foo();
}
}
}
|