blob: f3be74cdc7f1f1d88540d917d7fdc24d4f3909b4 [file] [log] [blame]
package annotator.tests;
import java.io.Closeable;
import java.io.IOException;
public class Receivers {
public void m(@checkers.tainting.quals.Tainted Receivers this) {}
public void spaces(@checkers.tainting.quals.Tainted Receivers this) {}
public void m(@checkers.tainting.quals.Tainted Receivers this, int i) {}
public void spaces(@checkers.tainting.quals.Tainted Receivers this, int i) {}
public void m(@checkers.tainting.quals.Tainted Receivers this, @Anno() String s) {}
}
class Receivers2 {
public void m(@checkers.tainting.quals.Tainted Receivers2 this) {}
public void spaces(@checkers.tainting.quals.Tainted Receivers2 this) {}
public void m(@checkers.tainting.quals.Tainted Receivers2 this, int i) {}
public void spaces(@checkers.tainting.quals.Tainted Receivers2 this, int i) {}
}
class Receivers3<K, V> {
public void m(@checkers.tainting.quals.Tainted Receivers3<@annotation.Inner(0) K, @annotation.Inner(1) V> this) {}
public void m(@checkers.tainting.quals.Tainted Receivers3<@annotation.Inner(0) K, @annotation.Inner(1) V> this, int i) {}
}
class Receivers4<K, V> {
public void m(@checkers.tainting.quals.Tainted Receivers4<K, V> this) {}
public void m(@checkers.tainting.quals.Tainted Receivers4<K, V> this, int i) {}
}
interface Receivers5 {
public void m(@checkers.tainting.quals.Tainted Receivers5 this);
}
enum Receivers6 {
TEST;
public void m(@checkers.tainting.quals.Tainted Receivers6 this) {}
}
class Receivers7<K extends Object, V> {
public void m(@checkers.tainting.quals.Tainted Receivers7<@annotation.Inner(0) K, @annotation.Inner(1) V> this) {}
}
class Receivers8<K extends Object> {
public void m(@checkers.tainting.quals.Tainted Receivers8<K> this) {}
}
class Receivers9 {
public void m(@checkers.tainting.quals.Tainted @annotation.A @annotation.B @annotation.C Receivers9 this) {}
}
class Receivers10<K, V> {
public void m(@checkers.tainting.quals.Tainted Receivers10<@annotation.A K, @annotation.B V> this) {}
public void m(@checkers.tainting.quals.Tainted Receivers10<@annotation.A K, @annotation.B V> this, Receivers10<K, V> other) {}
}
@interface Anno {}
// Test receiver insertion on inner class's default constructor.
final class ScriptBasedMapping {
private final class RawScriptBasedMapping {
public RawScriptBasedMapping(@checkers.inference.quals.VarAnnot(0) ScriptBasedMapping ScriptBasedMapping.this) { super(); }
}
}
// Test receiver insertion before first parameter annotation.
interface GenericInterface<T extends Object> {
public T map(T toMap);
}
class GenericArray<Z extends Object> implements GenericInterface<String []> {
private Z z;
public void setZ(Z z) {
this.z = z;
}
public String [] map(@trusted.quals.Untrusted GenericArray<Z> this, @trusted.quals.Untrusted String @trusted.quals.Untrusted [] toMap) {
return toMap;
}
}
class GenericFields {
private GenericArray<String> genArray;
}
// Test inner receiver insertion before first parameter annotation.
class Outer<T, S> {
class Inner<T2 extends T> {
private S s;
private T t;
protected void initialize(@checkers.inference.quals.VarAnnot(21) Outer<T, S>.Inner<@checkers.inference.quals.VarAnnot(20) T2> this, S s, T t) {
this.s = s;
this.t = t;
}
public Inner(S s, T t) {
initialize(s, t);
}
}
}
// Test that parameters inside an anonymous class get annotated.
interface Interface {
String get(@trusted.quals.Untrusted Interface this, @trusted.quals.Untrusted String param);
}
// Test for infinite loop bug.
class Closer<T> implements Closeable {
private final Closeable proxyProvider = System.out;
@Override
public void close(@checkers.inference.quals.VarAnnot(5) Closer<@checkers.inference.quals.VarAnnot(6) T> this) throws IOException {
proxyProvider.close();
}
}