blob: b335a255434d70cd46bd6169c1f706c86f8bf277 [file] [log] [blame]
import org.checkerframework.checker.tainting.qual.PolyTainted;
import org.checkerframework.checker.tainting.qual.Tainted;
import org.checkerframework.checker.tainting.qual.Untainted;
import org.checkerframework.framework.qual.HasQualifierParameter;
public class ObjectCreation {
@HasQualifierParameter(Tainted.class)
static class Buffer { // Which constructors and super calls are legal?
@PolyTainted Buffer() {
super(); // ok this creates an @Untainted object
}
@Untainted Buffer(int p) {
super(); // ok, super is untainted and creating an untainted buffer
}
@Tainted Buffer(String s) {
super(); // ok, super is not @HasQualifierParameter @Tainted Object >: the type of
// super.
}
}
@HasQualifierParameter(Tainted.class)
static class MyBuffer extends Buffer {
@PolyTainted MyBuffer() {
super(); // ok, if super is @PolyTainted.
}
@Untainted MyBuffer(int p) {
super(p);
}
@Tainted MyBuffer(String s) {
super(s);
}
@PolyTainted MyBuffer(Object o) {
// :: error: (super.invocation)
super("");
}
@Untainted MyBuffer(Object o, int p) {
super();
}
@Tainted MyBuffer(Object o, String s) {
super();
}
}
}