blob: 4584ce1804724a6d919f0f22e0740adb0e29a513 [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;
@HasQualifierParameter(Tainted.class)
public class TestFieldPolymorphism {
@PolyTainted String field;
@PolyTainted TestFieldPolymorphism(@PolyTainted String s) {
this.field = s;
}
@PolyTainted TestFieldPolymorphism testConstructor(@PolyTainted String s) {
return new TestFieldPolymorphism(s);
}
void testSetter1(@PolyTainted TestFieldPolymorphism this, @PolyTainted String s) {
this.field = s;
}
void testSetter2(@PolyTainted TestFieldPolymorphism this, @Untainted String s) {
this.field = s;
}
void testSetter3(@PolyTainted TestFieldPolymorphism this, @Tainted String s) {
// :: error: (assignment)
this.field = s;
}
@PolyTainted String testGetter1(@PolyTainted TestFieldPolymorphism this) {
return this.field;
}
@Untainted String testGetter2(@PolyTainted TestFieldPolymorphism this) {
// :: error: (return)
return this.field;
}
static @Untainted String testInstantiateUntaintedGetter(@Untainted TestFieldPolymorphism c) {
return c.field;
}
static void testInstantiateUntaintedSetter(
@Untainted TestFieldPolymorphism c, @Tainted String s) {
// :: error: (assignment)
c.field = s;
}
static @Untainted String testInstantiateTaintedGetter(@Tainted TestFieldPolymorphism c) {
// :: error: (return)
return c.field;
}
static void testInstantiateTaintedSetter(@Tainted TestFieldPolymorphism c, @Tainted String s) {
c.field = s;
}
}