import checkers.nullness.quals.*;
class NonNullOnEntryTest {
@Nullable Object field1;
@Nullable Object field2;
@NonNullOnEntry("field1")
void method1() {
field1.toString(); // OK, field1 is known to be non-null
//:: (dereference.of.nullable)
field2.toString(); // error, might throw NullPointerException
}
void method2() {
field1 = new Object();
method1(); // OK, satisfies method precondition
field1 = null;
// XXX TODO FIXME: //:: precondition.not.satisfied
method1(); // error, does not satisfy method precondition
}
private @Nullable Object field;
@NonNullOnEntry("field")
public void requiresNonNullField() {
}
public static void client(NonNullOnEntryTest arg) {
// XXX TODO FIXME: //:: precondition.not.satisfied
arg.requiresNonNullField();
}
}