@NotOnlyInitialized seems to fall short in cases of inline initialization.
import org.checkerframework.checker.initialization.qual.NotOnlyInitialized;
import org.checkerframework.checker.initialization.qual.UnderInitialization;
class A {
static interface I {}
static class B {
B(@UnderInitialization I stuff) { }
}
static class Fails implements I {
@NotOnlyInitialized B bar = new B(this);
// a.java:15: error: [assignment.type.incompatible] incompatible types in assignment.
// @NotOnlyInitialized B bar = new B(this);
// ^
// found : @UnderInitialization(A.B.class) @NonNull B
// required: @Initialized @NonNull B
}
static class works implements I {
@NotOnlyInitialized B bar;
{
bar = new B(this); // works
}
}
}
@NotOnlyInitialized
seems to fall short in cases of inline initialization.