001// This class is used in daikon.test.TestAst.
002
003// You can append methods after the last one, but don't rearrange
004// those already there.
005
006package daikon.test;
007
008import java.util.List;
009
010@SuppressWarnings({"rawtypes", "nullness"}) // testing code
011public class GenericTestClass<A, B extends String, C extends java.lang.Object, U> {
012
013  public List foo1() {
014    return null;
015  }
016
017  public List<String> foo2() {
018    return null;
019  }
020
021  public U foo3() {
022    return null;
023  }
024
025  <D extends Comparable> List<String> foo4() {
026    return null;
027  }
028
029  <E extends java.lang.Object> List<U> foo5() {
030    return null;
031  }
032
033  <F> List<String> foo55() {
034    return null;
035  }
036
037  public List foo6(List x) {
038    return null;
039  }
040
041  public List foo7(List<A> x) {
042    return null;
043  }
044
045  public List foo8(A x) {
046    return null;
047  }
048
049  public List foo9(B x) {
050    return null;
051  }
052
053  public List foo10(C x) {
054    return null;
055  }
056
057  <G extends Comparable> List<U> foo11(G x, C y) {
058    return null;
059  }
060
061  // test type parameter shadowing
062  @SuppressWarnings("TypeParameterShadowing")
063  <C extends Comparable> List<U> foo115(C x, B y) {
064    return null;
065  }
066
067  <G extends Comparable> List<String> foo12(A x, List<B> y) {
068    return null;
069  }
070
071  <G extends Comparable> List<String> foo13(A x, List<U> y) {
072    return null;
073  }
074
075  <H extends java.lang.Object> List<String> foo14(H x) {
076    return null;
077  }
078
079  <H extends java.lang.Object> List<U> foo15(B x) {
080    return null;
081  }
082
083  <I> List<String> foo16(I x) {
084    return null;
085  }
086
087  <I> List<String> foo17(I[] x) {
088    return null;
089  }
090
091  <I> List<String> foo18(I[][] x) {
092    return null;
093  }
094
095  <G extends Comparable> List<U> foo19(G[] x, C[] y) {
096    return null;
097  }
098
099  // Ugh! But this is legal.
100  List[] foo20(Comparable[][] x[], Object[] y[])[] {
101    return null;
102  }
103
104  // This is not legal in Java 6.
105  // public class Simple<U extends Map, V extends U.Entry> {
106  //   public void foo1 (V x) { }
107  //   public void foo2 (U.Entry x) { }
108  // }
109
110}