blob: acadf9c1e9a05a0370f91862f563bce7adbf9324 [file] [log] [blame]
import org.checkerframework.checker.initialization.qual.UnderInitialization;
import org.checkerframework.checker.nullness.qual.NonNull;
public class TypeFrames {
class A {
@NonNull String a;
public A() {
@UnderInitialization A l1 = this;
// :: error: (assignment)
@UnderInitialization(A.class) A l2 = this;
a = "";
@UnderInitialization(A.class) A l3 = this;
}
}
interface I {}
class B extends A implements I {
@NonNull String b;
public B() {
super();
@UnderInitialization(A.class) A l1 = this;
// :: error: (assignment)
@UnderInitialization(B.class) A l2 = this;
b = "";
@UnderInitialization(B.class) A l3 = this;
}
}
// subtyping
void t1(@UnderInitialization(A.class) B b1, @UnderInitialization(B.class) B b2) {
@UnderInitialization(A.class) B l1 = b1;
@UnderInitialization(A.class) B l2 = b2;
// :: error: (assignment)
@UnderInitialization(B.class) B l3 = b1;
}
}