import checkers.nullness.quals.*; import java.util.*; // @skip-test // This test is broken as it uses multiple classes. Javac halts // when seeing the first error class RawSuper { class A { @NonNull Object afield; A() { super(); mRA(this); //:: (type.incompatible) mA(this); afield = new Object(); mRA(this); mA(this); } A(int ignore) { this.raw(); afield = new Object(); } void raw() @Raw { } void nonRaw() { } } class B extends A { @NonNull Object bfield; B() { mRA(this); mA(this); mRB(this); //:: (type.incompatible) mB(this); bfield = new Object(); mRA(this); mA(this); mRB(this); mB(this); } // "@Raw" means "@Raw B @NonRaw A", but method overrides take precedence. void raw() @Raw { //:: (type.incompatible) super.nonRaw(); } } // This test may be extraneous class C extends B { @NonNull Object cfield; C() { mRA(this); mA(this); mRB(this); mB(this); mRC(this); //:: (type.incompatible) mC(this); cfield = new Object(); mRA(this); mA(this); mRB(this); mB(this); mRC(this); mC(this); } } void mA(@NonRaw A a) { } void mRA(@Raw A a) { } void mB(@NonRaw B b) { } void mRB(@Raw B b) { } void mC(@NonRaw C c) { } void mRC(@Raw C c) { } }