167ef4360e4d0b2c90124f1185357989682d62359Eric Spishakpackage annotator.tests;
267ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
34593a381f85509ebb89248dc954f2caf92cee1e4Dan Brownimport java.io.Closeable;
44593a381f85509ebb89248dc954f2caf92cee1e4Dan Brownimport java.io.IOException;
54593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown
667ef4360e4d0b2c90124f1185357989682d62359Eric Spishakpublic class Receivers {
767ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m() {}
867ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
9f3b74a417d512c40e1ffcaa767896ef6ba11da98Eric Spishak    public void           spaces() {}
10f3b74a417d512c40e1ffcaa767896ef6ba11da98Eric Spishak
1167ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m(int i) {}
1267ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
13f3b74a417d512c40e1ffcaa767896ef6ba11da98Eric Spishak    public void           spaces(int i) {}
14f3b74a417d512c40e1ffcaa767896ef6ba11da98Eric Spishak
1567ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m(@Anno() String s) {}
1667ef4360e4d0b2c90124f1185357989682d62359Eric Spishak}
1767ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
1867ef4360e4d0b2c90124f1185357989682d62359Eric Spishakclass Receivers2 {
1967ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m(Receivers2 this) {}
2067ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
21f3b74a417d512c40e1ffcaa767896ef6ba11da98Eric Spishak    public void           spaces(Receivers2 this) {}
22f3b74a417d512c40e1ffcaa767896ef6ba11da98Eric Spishak
2367ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m(Receivers2 this, int i) {}
24f3b74a417d512c40e1ffcaa767896ef6ba11da98Eric Spishak
25f3b74a417d512c40e1ffcaa767896ef6ba11da98Eric Spishak    public void           spaces(Receivers2 this, int i) {}
2667ef4360e4d0b2c90124f1185357989682d62359Eric Spishak}
2767ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
2867ef4360e4d0b2c90124f1185357989682d62359Eric Spishakclass Receivers3<K, V> {
2967ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m() {}
3067ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
3167ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m(int i) {}
3267ef4360e4d0b2c90124f1185357989682d62359Eric Spishak}
3367ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
3467ef4360e4d0b2c90124f1185357989682d62359Eric Spishakclass Receivers4<K, V> {
3567ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m(Receivers4<K, V> this) {}
3667ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
3767ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m(Receivers4<K, V> this, int i) {}
3867ef4360e4d0b2c90124f1185357989682d62359Eric Spishak}
3967ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
4067ef4360e4d0b2c90124f1185357989682d62359Eric Spishakinterface Receivers5 {
4167ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m();
4267ef4360e4d0b2c90124f1185357989682d62359Eric Spishak}
4367ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
4467ef4360e4d0b2c90124f1185357989682d62359Eric Spishakenum Receivers6 {
4567ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    TEST;
4667ef4360e4d0b2c90124f1185357989682d62359Eric Spishak    public void m() {}
4767ef4360e4d0b2c90124f1185357989682d62359Eric Spishak}
4867ef4360e4d0b2c90124f1185357989682d62359Eric Spishak
49b5c156e0b62f1f601fc1e696c0d7e8fe733f1e94Eric Spishakclass Receivers7<K extends Object, V> {
50e5c299b5a604d888f312414745090254be34d387Eric Spishak    public void m() {}
51e5c299b5a604d888f312414745090254be34d387Eric Spishak}
52e5c299b5a604d888f312414745090254be34d387Eric Spishak
53e5c299b5a604d888f312414745090254be34d387Eric Spishakclass Receivers8<K extends Object> {
54e5c299b5a604d888f312414745090254be34d387Eric Spishak    public void m(Receivers8<K> this) {}
55e5c299b5a604d888f312414745090254be34d387Eric Spishak}
56e5c299b5a604d888f312414745090254be34d387Eric Spishak
5701aec963d4771995d97d807dbd42aff4adff0f62Eric Spishakclass Receivers9 {
5801aec963d4771995d97d807dbd42aff4adff0f62Eric Spishak    public void m() {}
5901aec963d4771995d97d807dbd42aff4adff0f62Eric Spishak}
6001aec963d4771995d97d807dbd42aff4adff0f62Eric Spishak
61e1ef3cf6916e0f27b72a542d49699edde76583d6Eric Spishakclass Receivers10<K, V> {
62e1ef3cf6916e0f27b72a542d49699edde76583d6Eric Spishak    public void m(Receivers10<K, V> this) {}
63e1ef3cf6916e0f27b72a542d49699edde76583d6Eric Spishak
64e1ef3cf6916e0f27b72a542d49699edde76583d6Eric Spishak    public void m(Receivers10<K, V> this, Receivers10<K, V> other) {}
65e1ef3cf6916e0f27b72a542d49699edde76583d6Eric Spishak}
66e1ef3cf6916e0f27b72a542d49699edde76583d6Eric Spishak
6767ef4360e4d0b2c90124f1185357989682d62359Eric Spishak@interface Anno {}
684593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown
694593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown// Test receiver insertion on inner class's default constructor.
704593a381f85509ebb89248dc954f2caf92cee1e4Dan Brownfinal class ScriptBasedMapping  {
714593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  private final class RawScriptBasedMapping {
724593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  }
734593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown}
744593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown
754593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown// Test receiver insertion before first parameter annotation.
764593a381f85509ebb89248dc954f2caf92cee1e4Dan Browninterface GenericInterface<T extends Object> {
774593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  public T map(T toMap);
784593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown}
794593a381f85509ebb89248dc954f2caf92cee1e4Dan Brownclass GenericArray<Z extends Object> implements GenericInterface<String []> {
804593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  private Z z;
814593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  public void setZ(Z z) {
824593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    this.z = z;
834593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  }
844593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  public String [] map(String [] toMap) {
854593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    return toMap;
864593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  }
874593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown}
884593a381f85509ebb89248dc954f2caf92cee1e4Dan Brownclass GenericFields {
894593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  private GenericArray<String> genArray;
904593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown}
914593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown
924593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown// Test inner receiver insertion before first parameter annotation.
934593a381f85509ebb89248dc954f2caf92cee1e4Dan Brownclass Outer<T, S> {
944593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  class Inner<T2 extends T> {
954593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    private S s;
964593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    private T t;
974ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst
984593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    protected void initialize(S s, T t) {
994593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown      this.s = s;
1004593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown      this.t = t;
1014593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    }
1024ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst
1034593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    public Inner(S s, T t) {
1044593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown      initialize(s, t);
1054593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    }
1064593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  }
1074593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown}
1084593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown
1094593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown// Test that parameters inside an anonymous class get annotated.
1104593a381f85509ebb89248dc954f2caf92cee1e4Dan Browninterface Interface {
1114593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    String get(String param);
1124593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown}
1134593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown
1144593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown// Test for infinite loop bug.
1154593a381f85509ebb89248dc954f2caf92cee1e4Dan Brownclass Closer<T> implements Closeable {
1164593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  private final Closeable proxyProvider = System.out;
1174593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown
1184593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  @Override
1194593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  public void close() throws IOException {
1204593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown    proxyProvider.close();
1214593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown  }
1224593a381f85509ebb89248dc954f2caf92cee1e4Dan Brown}
123