test/tools/javac/annotations/typeAnnotations/referenceinfos/NestedTypes.java

Wed, 27 Apr 2016 01:34:52 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:34:52 +0800
changeset 0
959103a6100f
child 2525
2eb010b6cb22
permissions
-rw-r--r--

Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/langtools/
changeset: 2573:53ca196be1ae
tag: jdk8u25-b17

     1 /*
     2  * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  */
    24 import static com.sun.tools.classfile.TypeAnnotation.TargetType.*;
    26 /*
    27  * @test
    28  * @summary Test population of reference info for nested types
    29  * @compile -g Driver.java ReferenceInfoUtil.java NestedTypes.java
    30  * @run main Driver NestedTypes
    31  */
    32 public class NestedTypes {
    34     // method parameters
    36     @TADescriptions({
    37         @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
    38                 genericLocation = {}, paramIndex = 0),
    39         @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
    40                 genericLocation = {1, 0}, paramIndex = 0)
    41     })
    42     public String testParam1() {
    43         return "void test(@TA Outer.@TB Inner a) { }";
    44     }
    46     @TADescriptions({
    47         @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
    48                 genericLocation = {3, 0}, paramIndex = 0),
    49         @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
    50                 genericLocation = {3, 0, 1, 0}, paramIndex = 0)
    51     })
    52     public String testParam1b() {
    53         return "void test(List<@TA Outer.@TB Inner> a) { }";
    54     }
    56     // TODO: the tests that use @TA Map.Entry should fail, as
    57     // Map cannot be annotated.
    58     // We need some tests for the fully qualified name syntax.
    59     /*
    60     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
    61             genericLocation = {}, paramIndex = 0)
    62     public String testParam1c() {
    63         return "void test(java.util.@TA Map.Entry a) { }";
    64     }
    66     @TADescriptions({
    67         @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
    68                 genericLocation = {}, paramIndex = 0),
    69         @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
    70                 genericLocation = {1, 0}, paramIndex = 0)
    71     })
    72     public String testParam1d() {
    73         return "void test(java.util.@TA Map.@TB Entry a) { }";
    74     }
    76     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
    77             genericLocation = {3, 0}, paramIndex = 0)
    78     public String testParam1e() {
    79         return "void test(List<java.util.@TA Map.Entry> a) { }";
    80     }
    82     @TADescriptions({
    83         @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
    84                 genericLocation = {3, 0}, paramIndex = 0),
    85         @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
    86                 genericLocation = {3, 0, 1, 0}, paramIndex = 0)
    87     })
    88     public String testParam1f() {
    89         return "void test(List<java.util.@TA Map. @TB Entry> a) { }";
    90     }
    91     */
    93     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
    94            genericLocation = {3, 0}, paramIndex = 0)
    95     public String testParam1g() {
    96         return "void test(List<java.util.Map. @TB Entry> a) { }";
    97     }
    99     @TADescriptions({
   100         @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
   101                 genericLocation = {}, paramIndex = 0),
   102         @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
   103                 genericLocation = {1, 0}, paramIndex = 0)
   104     })
   105     public String testParam2() {
   106         return "void test(@TA GOuter<String,String>.@TB GInner<String,String> a) { }";
   107     }
   109     @TADescriptions({
   110         @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
   111                 genericLocation = {3, 0}, paramIndex = 0),
   112         @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
   113                 genericLocation = {3, 0, 1, 0}, paramIndex = 0)
   114     })
   115     public String testParam2b() {
   116         return "void test(List<@TA GOuter<String,String>.@TB GInner<String,String>> a) { }";
   117     }
   119     @TADescriptions({
   120         @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
   121                 genericLocation = {0, 0, 0, 0}, paramIndex = 0),
   122         @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
   123                 genericLocation = {0, 0, 0, 0, 1, 0}, paramIndex = 0),
   124         @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER,
   125                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0}, paramIndex = 0),
   126         @TADescription(annotation = "TD", type = METHOD_FORMAL_PARAMETER,
   127                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0),
   128         @TADescription(annotation = "TE", type = METHOD_FORMAL_PARAMETER,
   129                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0),
   130         @TADescription(annotation = "TF", type = METHOD_FORMAL_PARAMETER,
   131                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0),
   132         @TADescription(annotation = "TG", type = METHOD_FORMAL_PARAMETER,
   133                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0}, paramIndex = 0),
   134         @TADescription(annotation = "TH", type = METHOD_FORMAL_PARAMETER,
   135                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0}, paramIndex = 0),
   136         @TADescription(annotation = "TI", type = METHOD_FORMAL_PARAMETER,
   137                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1}, paramIndex = 0),
   138         @TADescription(annotation = "TJ", type = METHOD_FORMAL_PARAMETER, paramIndex = 0),
   139         @TADescription(annotation = "TK", type = METHOD_FORMAL_PARAMETER,
   140                 genericLocation = {0, 0}, paramIndex = 0)
   141     })
   142     public String testParam3() {
   143         return "class Outer {\n" +
   144                 " class GInner<X> {\n" +
   145                 "  class GInner2<Y, Z> {}\n" +
   146                 "}}\n\n" +
   147                 "class Test {\n" +
   148                 " void test(@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[] a) { }\n" +
   149                 "}";
   150     }
   152     @TADescriptions({
   153         @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
   154                 genericLocation = {3, 0, 0, 0, 0, 0}, paramIndex = 0),
   155         @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
   156                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0}, paramIndex = 0),
   157         @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER,
   158                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0}, paramIndex = 0),
   159         @TADescription(annotation = "TD", type = METHOD_FORMAL_PARAMETER,
   160                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0),
   161         @TADescription(annotation = "TE", type = METHOD_FORMAL_PARAMETER,
   162                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0),
   163         @TADescription(annotation = "TF", type = METHOD_FORMAL_PARAMETER,
   164                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0),
   165         @TADescription(annotation = "TG", type = METHOD_FORMAL_PARAMETER,
   166                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0}, paramIndex = 0),
   167         @TADescription(annotation = "TH", type = METHOD_FORMAL_PARAMETER,
   168                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0}, paramIndex = 0),
   169         @TADescription(annotation = "TI", type = METHOD_FORMAL_PARAMETER,
   170                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1}, paramIndex = 0),
   171         @TADescription(annotation = "TJ", type = METHOD_FORMAL_PARAMETER,
   172                 genericLocation = {3, 0}, paramIndex = 0),
   173         @TADescription(annotation = "TK", type = METHOD_FORMAL_PARAMETER,
   174                 genericLocation = {3, 0, 0, 0}, paramIndex = 0)
   175     })
   176     public String testParam4() {
   177         return "class Outer {\n" +
   178                 " class GInner<X> {\n" +
   179                 "  class GInner2<Y, Z> {}\n" +
   180                 "}}\n\n" +
   181                 "class Test {\n" +
   182                 " void test(List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]> a) { }\n" +
   183                 "}";
   184     }
   187     // Local variables
   189     @TADescriptions({
   190         @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
   191                 genericLocation = {},
   192                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   193         @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
   194                 genericLocation = {1, 0},
   195                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
   196     })
   197     public String testLocal1a() {
   198         return "void test() { @TA Outer.@TB Inner a = null; }";
   199     }
   201     @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
   202             genericLocation = {},
   203             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
   204     public String testLocal1b() {
   205         return "void test() { @TA Outer.Inner a = null; }";
   206     }
   208     @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
   209             genericLocation = {1, 0},
   210             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
   211     public String testLocal1c() {
   212         return "void test() { Outer.@TB Inner a = null; }";
   213     }
   215     @TADescriptions({
   216         @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
   217                 genericLocation = {},
   218                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   219         @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
   220                 genericLocation = {1, 0},
   221                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
   222     })
   223     public String testLocal2() {
   224         return "void test() { @TA GOuter<String,String>.@TB GInner<String,String> a = null; }";
   225     }
   227     @TADescriptions({
   228         @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
   229                 genericLocation = {0, 0, 0, 0},
   230                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   231         @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
   232                 genericLocation = {0, 0, 0, 0, 1, 0},
   233                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   234         @TADescription(annotation = "TC", type = LOCAL_VARIABLE,
   235                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0},
   236                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   237         @TADescription(annotation = "TD", type = LOCAL_VARIABLE,
   238                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
   239                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   240         @TADescription(annotation = "TE", type = LOCAL_VARIABLE,
   241                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
   242                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   243         @TADescription(annotation = "TF", type = LOCAL_VARIABLE,
   244                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
   245                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   246         @TADescription(annotation = "TG", type = LOCAL_VARIABLE,
   247                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0},
   248                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   249         @TADescription(annotation = "TH", type = LOCAL_VARIABLE,
   250                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
   251                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   252         @TADescription(annotation = "TI", type = LOCAL_VARIABLE,
   253                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
   254                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   255         @TADescription(annotation = "TJ", type = LOCAL_VARIABLE,
   256                 genericLocation = {},
   257                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1}),
   258         @TADescription(annotation = "TK", type = LOCAL_VARIABLE,
   259                 genericLocation = {0, 0},
   260                 lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
   261     })
   262     public String testLocal3() {
   263         return "class Outer {\n" +
   264                 " class GInner<X> {\n" +
   265                 "  class GInner2<Y, Z> {}\n" +
   266                 "}}\n\n" +
   267                 "class Test {\n" +
   268                 " void test() { @TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[] a = null; }\n" +
   269                 "}";
   270     }
   272     @TADescriptions({
   273         @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
   274                 genericLocation = {3, 0, 0, 0, 0, 0},
   275                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   276         @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
   277                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0},
   278                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   279         @TADescription(annotation = "TC", type = LOCAL_VARIABLE,
   280                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0},
   281                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   282         @TADescription(annotation = "TD", type = LOCAL_VARIABLE,
   283                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
   284                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   285         @TADescription(annotation = "TE", type = LOCAL_VARIABLE,
   286                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
   287                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   288         @TADescription(annotation = "TF", type = LOCAL_VARIABLE,
   289                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
   290                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   291         @TADescription(annotation = "TG", type = LOCAL_VARIABLE,
   292                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0},
   293                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   294         @TADescription(annotation = "TH", type = LOCAL_VARIABLE,
   295                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
   296                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   297         @TADescription(annotation = "TI", type = LOCAL_VARIABLE,
   298                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
   299                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   300         @TADescription(annotation = "TJ", type = LOCAL_VARIABLE,
   301                 genericLocation = {3, 0},
   302                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1}),
   303         @TADescription(annotation = "TK", type = LOCAL_VARIABLE,
   304                 genericLocation = {3, 0, 0, 0},
   305                 lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
   306     })
   307     public String testLocal4() {
   308         return "class Outer {\n" +
   309                 " class GInner<X> {\n" +
   310                 "  class GInner2<Y, Z> {}\n" +
   311                 "}}\n\n" +
   312                 "class Test {\n" +
   313                 " void test() { List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]> a = null; }\n" +
   314                 "}";
   315     }
   318     // fields
   320     @TADescriptions({
   321         @TADescription(annotation = "TA", type = FIELD,
   322                 genericLocation = {}),
   323         @TADescription(annotation = "TB", type = FIELD,
   324                 genericLocation = {1, 0})
   325     })
   326     public String testField1a() {
   327         return "@TA Outer.@TB Inner a;";
   328     }
   330     @TADescription(annotation = "TA", type = FIELD,
   331             genericLocation = {})
   332     public String testField1b() {
   333         return "@TA Outer.Inner a;";
   334     }
   336     @TADescription(annotation = "TB", type = FIELD,
   337             genericLocation = {1, 0})
   338     public String testField1c() {
   339         return "Outer.@TB Inner a;";
   340     }
   342     @TADescriptions({
   343         @TADescription(annotation = "TA", type = FIELD,
   344                 genericLocation = {}),
   345         @TADescription(annotation = "TB", type = FIELD,
   346                 genericLocation = {1, 0})
   347     })
   348     public String testField2() {
   349         return "@TA GOuter<String,String>.@TB GInner<String,String> a;";
   350     }
   352     @TADescriptions({
   353         @TADescription(annotation = "TA", type = FIELD,
   354                 genericLocation = {0, 0, 0, 0}),
   355         @TADescription(annotation = "TB", type = FIELD,
   356                 genericLocation = {0, 0, 0, 0, 1, 0}),
   357         @TADescription(annotation = "TC", type = FIELD,
   358                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0}),
   359         @TADescription(annotation = "TD", type = FIELD,
   360                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}),
   361         @TADescription(annotation = "TE", type = FIELD,
   362                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0}),
   363         @TADescription(annotation = "TF", type = FIELD,
   364                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}),
   365         @TADescription(annotation = "TG", type = FIELD,
   366                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0}),
   367         @TADescription(annotation = "TH", type = FIELD,
   368                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0}),
   369         @TADescription(annotation = "TI", type = FIELD,
   370                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1}),
   371         @TADescription(annotation = "TJ", type = FIELD),
   372         @TADescription(annotation = "TK", type = FIELD,
   373                 genericLocation = {0, 0})
   374     })
   375     public String testField3() {
   376         return "class Outer {\n" +
   377                 " class GInner<X> {\n" +
   378                 "  class GInner2<Y, Z> {}\n" +
   379                 "}}\n\n" +
   380                 "class Test {\n" +
   381                 " @TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[] a;\n" +
   382                 "}";
   383     }
   385     @TADescriptions({
   386         @TADescription(annotation = "TA", type = FIELD,
   387                 genericLocation = {3, 0, 0, 0, 0, 0}),
   388         @TADescription(annotation = "TB", type = FIELD,
   389                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0}),
   390         @TADescription(annotation = "TC", type = FIELD,
   391                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0}),
   392         @TADescription(annotation = "TD", type = FIELD,
   393                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}),
   394         @TADescription(annotation = "TE", type = FIELD,
   395                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0}),
   396         @TADescription(annotation = "TF", type = FIELD,
   397                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}),
   398         @TADescription(annotation = "TG", type = FIELD,
   399                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0}),
   400         @TADescription(annotation = "TH", type = FIELD,
   401                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0}),
   402         @TADescription(annotation = "TI", type = FIELD,
   403                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1}),
   404         @TADescription(annotation = "TJ", type = FIELD,
   405                 genericLocation = {3, 0}),
   406         @TADescription(annotation = "TK", type = FIELD,
   407                 genericLocation = {3, 0, 0, 0})
   408     })
   409     public String testField4() {
   410         return "class Outer {\n" +
   411                 " class GInner<X> {\n" +
   412                 "  class GInner2<Y, Z> {}\n" +
   413                 "}}\n\n" +
   414                 "class Test {\n" +
   415                 " List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]> a;\n" +
   416                 "}";
   417     }
   420     // return types
   422     @TADescriptions({
   423         @TADescription(annotation = "TA", type = METHOD_RETURN,
   424                 genericLocation = {}),
   425         @TADescription(annotation = "TB", type = METHOD_RETURN,
   426                 genericLocation = {1, 0})
   427     })
   428     public String testReturn1() {
   429         return "@TA Outer.@TB Inner test() { return null; }";
   430     }
   432     @TADescriptions({
   433         @TADescription(annotation = "TA", type = METHOD_RETURN,
   434                 genericLocation = {}),
   435         @TADescription(annotation = "TB", type = METHOD_RETURN,
   436                 genericLocation = {1, 0})
   437     })
   438     public String testReturn2() {
   439         return "@TA GOuter<String,String>.@TB GInner<String,String> test() { return null; }";
   440     }
   442     @TADescriptions({
   443         @TADescription(annotation = "TA", type = METHOD_RETURN,
   444                 genericLocation = {0, 0, 0, 0}),
   445         @TADescription(annotation = "TB", type = METHOD_RETURN,
   446                 genericLocation = {0, 0, 0, 0, 1, 0}),
   447         @TADescription(annotation = "TC", type = METHOD_RETURN,
   448                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0}),
   449         @TADescription(annotation = "TD", type = METHOD_RETURN,
   450                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}),
   451         @TADescription(annotation = "TE", type = METHOD_RETURN,
   452                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0}),
   453         @TADescription(annotation = "TF", type = METHOD_RETURN,
   454                 genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}),
   455         @TADescription(annotation = "TG", type = METHOD_RETURN,
   456                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0}),
   457         @TADescription(annotation = "TH", type = METHOD_RETURN,
   458                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0}),
   459         @TADescription(annotation = "TI", type = METHOD_RETURN,
   460                 genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1}),
   461         @TADescription(annotation = "TJ", type = METHOD_RETURN),
   462         @TADescription(annotation = "TK", type = METHOD_RETURN,
   463                 genericLocation = {0, 0})
   464     })
   465     public String testReturn3() {
   466         return "class Outer {\n" +
   467                 " class GInner<X> {\n" +
   468                 "  class GInner2<Y, Z> {}\n" +
   469                 "}}\n\n" +
   470                 "class Test {\n" +
   471                 " @TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[] test() { return null; }\n" +
   472                 "}";
   473     }
   475     @TADescriptions({
   476         @TADescription(annotation = "TA", type = METHOD_RETURN,
   477                 genericLocation = {3, 0, 0, 0, 0, 0}),
   478         @TADescription(annotation = "TB", type = METHOD_RETURN,
   479                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0}),
   480         @TADescription(annotation = "TC", type = METHOD_RETURN,
   481                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0}),
   482         @TADescription(annotation = "TD", type = METHOD_RETURN,
   483                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}),
   484         @TADescription(annotation = "TE", type = METHOD_RETURN,
   485                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0}),
   486         @TADescription(annotation = "TF", type = METHOD_RETURN,
   487                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}),
   488         @TADescription(annotation = "TG", type = METHOD_RETURN,
   489                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0}),
   490         @TADescription(annotation = "TH", type = METHOD_RETURN,
   491                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0}),
   492         @TADescription(annotation = "TI", type = METHOD_RETURN,
   493                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1}),
   494         @TADescription(annotation = "TJ", type = METHOD_RETURN,
   495                 genericLocation = {3, 0}),
   496         @TADescription(annotation = "TK", type = METHOD_RETURN,
   497                 genericLocation = {3, 0, 0, 0})
   498     })
   499     public String testReturn4() {
   500         return "class Outer {\n" +
   501                 " class GInner<X> {\n" +
   502                 "  class GInner2<Y, Z> {}\n" +
   503                 "}}\n\n" +
   504                 "class Test {\n" +
   505                 " List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]> test() { return null; }\n" +
   506                 "}";
   507     }
   509     @TADescriptions({
   510         @TADescription(annotation = "TA", type = METHOD_RETURN,
   511                 genericLocation = {3, 0}),
   512         @TADescription(annotation = "TB", type = METHOD_RETURN,
   513                 genericLocation = {3, 0, 3, 0}),
   514         @TADescription(annotation = "TC", type = METHOD_RETURN,
   515                 genericLocation = {3, 0, 3, 1}),
   516         @TADescription(annotation = "TD", type = METHOD_RETURN,
   517                 genericLocation = {3, 0, 3, 1, 3, 0}),
   518         @TADescription(annotation = "TE", type = METHOD_RETURN,
   519                 genericLocation = {3, 0, 1, 0}),
   520         @TADescription(annotation = "TF", type = METHOD_RETURN,
   521                 genericLocation = {3, 0, 1, 0, 3, 0}),
   522         @TADescription(annotation = "TG", type = METHOD_RETURN,
   523                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}),
   524         @TADescription(annotation = "TH", type = METHOD_RETURN,
   525                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0}),
   526         @TADescription(annotation = "TI", type = METHOD_RETURN,
   527                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0}),
   528         @TADescription(annotation = "TJ", type = METHOD_RETURN,
   529                 genericLocation = {3, 0, 1, 0, 1, 0}),
   530     })
   531     public String testReturn5() {
   532         return "class GOuter<A, B> {\n" +
   533                 " class GInner<X> {\n" +
   534                 "  class GInner2<Y, Z> {}\n" +
   535                 "}}\n\n" +
   536                 "class Test {\n" +
   537                 " List<@TA GOuter<@TB String, @TC List<@TD Object>> . @TE GInner<@TF List<@TG Object @TH[] @TI[]>>. @TJ GInner2<String, String>> test() { return null; }\n" +
   538                 "}";
   539     }
   542     // type parameters
   544     @TADescriptions({
   545         @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
   546                 genericLocation = {}, paramIndex = 0, boundIndex = 0),
   547         @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
   548                 genericLocation = {1, 0}, paramIndex = 0, boundIndex = 0)
   549     })
   550     public String testTypeparam1() {
   551         return "<X extends @TA Outer.@TB Inner> X test() { return null; }";
   552     }
   554     @TADescriptions({
   555         @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
   556                 genericLocation = {}, paramIndex = 0, boundIndex = 0),
   557         @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
   558                 genericLocation = {1, 0}, paramIndex = 0, boundIndex = 0)
   559     })
   560     public String testTypeparam2() {
   561         return "<X extends @TA GOuter<String,String>.@TB GInner<String,String>> X test() { return null; }";
   562     }
   564     @TADescriptions({
   565         @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
   566                 genericLocation = {},
   567                 paramIndex = 0, boundIndex = 0),
   568         @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
   569                 genericLocation = {1, 0},
   570                 paramIndex = 0, boundIndex = 0),
   571         @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND,
   572                 genericLocation = {1, 0, 3, 0},
   573                 paramIndex = 0, boundIndex = 0),
   574         @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND,
   575                 genericLocation = {1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
   576                 paramIndex = 0, boundIndex = 0),
   577         @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND,
   578                 genericLocation = {1, 0, 3, 0, 3, 0},
   579                 paramIndex = 0, boundIndex = 0),
   580         @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND,
   581                 genericLocation = {1, 0, 3, 0, 3, 0, 0, 0},
   582                 paramIndex = 0, boundIndex = 0),
   583         @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND,
   584                 genericLocation = {1, 0, 1, 0},
   585                 paramIndex = 0, boundIndex = 0),
   586         @TADescription(annotation = "TH", type = METHOD_TYPE_PARAMETER_BOUND,
   587                 genericLocation = {1, 0, 1, 0, 3, 0},
   588                 paramIndex = 0, boundIndex = 0),
   589         @TADescription(annotation = "TI", type = METHOD_TYPE_PARAMETER_BOUND,
   590                 genericLocation = {1, 0, 1, 0, 3, 1},
   591                 paramIndex = 0, boundIndex = 0),
   592     })
   593     public String testTypeparam3() {
   594         return "class Outer {\n" +
   595                 " class GInner<X> {\n" +
   596                 "  class GInner2<Y, Z> {}\n" +
   597                 "}}\n\n" +
   598                 "class Test {\n" +
   599                 " <X extends @TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object>> X test() { return null; }\n" +
   600                 "}";
   601     }
   603     @TADescriptions({
   604         @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
   605                 genericLocation = {3, 0, 0, 0, 0, 0},
   606                 paramIndex = 0, boundIndex = 1),
   607         @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
   608                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0},
   609                 paramIndex = 0, boundIndex = 1),
   610         @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND,
   611                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0},
   612                 paramIndex = 0, boundIndex = 1),
   613         @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND,
   614                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
   615                 paramIndex = 0, boundIndex = 1),
   616         @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND,
   617                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
   618                 paramIndex = 0, boundIndex = 1),
   619         @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND,
   620                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
   621                 paramIndex = 0, boundIndex = 1),
   622         @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND,
   623                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0},
   624                 paramIndex = 0, boundIndex = 1),
   625         @TADescription(annotation = "TH", type = METHOD_TYPE_PARAMETER_BOUND,
   626                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
   627                 paramIndex = 0, boundIndex = 1),
   628         @TADescription(annotation = "TI", type = METHOD_TYPE_PARAMETER_BOUND,
   629                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
   630                 paramIndex = 0, boundIndex = 1),
   631         @TADescription(annotation = "TJ", type = METHOD_TYPE_PARAMETER_BOUND,
   632                 genericLocation = {3, 0},
   633                 paramIndex = 0, boundIndex = 1),
   634         @TADescription(annotation = "TK", type = METHOD_TYPE_PARAMETER_BOUND,
   635                 genericLocation = {3, 0, 0, 0},
   636                 paramIndex = 0, boundIndex = 1)
   637     })
   638     public String testTypeparam4() {
   639         return "class Outer {\n" +
   640                 " class GInner<X> {\n" +
   641                 "  class GInner2<Y, Z> {}\n" +
   642                 "}}\n\n" +
   643                 "class Test {\n" +
   644                 " <X extends List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]>> X test() { return null; }\n" +
   645                 "}";
   646     }
   648     @TADescriptions({
   649         @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
   650                 genericLocation = {3, 0}, paramIndex = 0, boundIndex = 1),
   651         @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
   652                 genericLocation = {3, 0, 3, 0}, paramIndex = 0, boundIndex = 1),
   653         @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND,
   654                 genericLocation = {3, 0, 3, 1}, paramIndex = 0, boundIndex = 1),
   655         @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND,
   656                 genericLocation = {3, 0, 3, 1, 3, 0}, paramIndex = 0, boundIndex = 1),
   657         @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND,
   658                 genericLocation = {3, 0, 1, 0}, paramIndex = 0, boundIndex = 1),
   659         @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND,
   660                 genericLocation = {3, 0, 1, 0, 3, 0}, paramIndex = 0, boundIndex = 1),
   661         @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND,
   662                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0, boundIndex = 1),
   663         @TADescription(annotation = "TH", type = METHOD_TYPE_PARAMETER_BOUND,
   664                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0, boundIndex = 1),
   665         @TADescription(annotation = "TI", type = METHOD_TYPE_PARAMETER_BOUND,
   666                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0, boundIndex = 1),
   667         @TADescription(annotation = "TJ", type = METHOD_TYPE_PARAMETER_BOUND,
   668                 genericLocation = {3, 0, 1, 0, 1, 0}, paramIndex = 0, boundIndex = 1),
   669     })
   670     public String testTypeparam5() {
   671         return "class GOuter<A, B> {\n" +
   672                 " class GInner<X> {\n" +
   673                 "  class GInner2<Y, Z> {}\n" +
   674                 "}}\n\n" +
   675                 "class Test {\n" +
   676                 " <X extends List<@TA GOuter<@TB String, @TC List<@TD Object>> . @TE GInner<@TF List<@TG Object @TH[] @TI[]>>. @TJ GInner2<String, String>>> X test() { return null; }\n" +
   677                 "}";
   678     }
   680     @TADescription(annotation = "TA", type = FIELD,
   681             genericLocation = {3, 0, 1, 0})
   682     public String testUses1a() {
   683         return "class Test { class Inner {}    List<@TA Inner> f; }";
   684     }
   686     @TADescription(annotation = "TA", type = FIELD,
   687             genericLocation = {3, 0})
   688     public String testUses1b() {
   689         return "class Test { class Inner {}    List<@TA Test.Inner> f; }";
   690     }
   692     @TADescription(annotation = "TA", type = FIELD,
   693             genericLocation = {3, 0, 1, 0, 1, 0})
   694     @TestClass("Test$Inner")
   695     public String testUses2a() {
   696         return "class Test { class Inner { class Inner2{}    List<@TA Inner2> f; }}";
   697     }
   699     @TADescription(annotation = "TA", type = FIELD,
   700             genericLocation = {3, 0, 1, 0})
   701     @TestClass("Test$Inner")
   702     public String testUses2b() {
   703         return "class Test { class Inner { class Inner2{}    List<@TA Inner.Inner2> f; }}";
   704     }
   706     @TADescription(annotation = "TA", type = FIELD,
   707             genericLocation = {3, 0, 1, 0, 1, 0})
   708     @TestClass("Test$Inner")
   709     public String testUses2c() {
   710         return "class Test { class Inner { class Inner2{}    List<Inner.@TA Inner2> f; }}";
   711     }
   713     @TADescription(annotation = "TA", type = FIELD,
   714             genericLocation = {3, 0})
   715     @TestClass("Test$Inner")
   716     public String testUses2d() {
   717         return "class Test{ class Inner { class Inner2{}    List<@TA Test.Inner.Inner2> f; }}";
   718     }
   720     @TADescription(annotation = "TA", type = FIELD,
   721             genericLocation = {3, 0, 1, 0})
   722     @TestClass("Test$Inner")
   723     public String testUses2e() {
   724         return "class Test { class Inner { class Inner2{}    List<Test.@TA Inner.Inner2> f; }}";
   725     }
   727     @TADescription(annotation = "TA", type = FIELD,
   728             genericLocation = {3, 0, 1, 0, 1, 0})
   729     @TestClass("Test$Inner")
   730     public String testUses2f() {
   731         return "class Test { class Inner { class Inner2{}    List<Test.Inner.@TA Inner2> f; }}";
   732     }
   734     @TADescription(annotation = "TA", type = FIELD,
   735             genericLocation = {3, 0, 1, 0, 1, 0})
   736     @TestClass("Test$Inner")
   737     public String testUses3a() {
   738         return "class Test { class Inner<A, B> { class Inner2<C, D>{}\n" +
   739                 "    List<Test.Inner.@TA Inner2> f; }}";
   740     }
   742     @TADescription(annotation = "TA", type = FIELD,
   743             genericLocation = {3, 0, 1, 0})
   744     @TestClass("Test$Inner")
   745     public String testUses3b() {
   746         return "class Test { class Inner<A, B> { class Inner2<C, D>{}\n" +
   747                 "    List<Test.@TA Inner.Inner2> f; }}";
   748     }
   750     @TADescriptions({
   751         @TADescription(annotation = "TA", type = FIELD,
   752                 genericLocation = {}),
   753         @TADescription(annotation = "TB", type = FIELD,
   754                 genericLocation = {3, 0})
   755     })
   756     public String testUses4() {
   757         return "class Test { static class TInner {}\n" +
   758                 "    @TA TInner f; \n" +
   759                 "    List<@TB TInner> g; }";
   760     }
   762     @TADescription(annotation = "TA", type = FIELD,
   763             genericLocation = {3, 0, 1, 0, 3, 1})
   764     @TestClass("Test$Inner")
   765     public String testUses3c() {
   766         return "class Test { class Inner<A, B> { class Inner2<C, D>{}\n" +
   767                 "    List<Test.Inner<String, @TA Object>.Inner2<Test, Test>> f; }}";
   768     }
   770     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, paramIndex=0)
   771     public String testFullyQualified1() {
   772         return "void testme(java.security.@TA ProtectionDomain protectionDomain) {}";
   773     }
   775     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, paramIndex=0,
   776             genericLocation = {3, 0})
   777     public String testFullyQualified2() {
   778         return "void testme(List<java.security.@TA ProtectionDomain> protectionDomain) {}";
   779     }
   781     @TADescriptions({
   782         @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
   783                 genericLocation = {},
   784                 lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
   785                 lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
   786                 lvarIndex = ReferenceInfoUtil.IGNORE_VALUE),
   787         @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
   788                 genericLocation = {1, 0},
   789                 lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
   790                 lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
   791                 lvarIndex = ReferenceInfoUtil.IGNORE_VALUE),
   792         @TADescription(annotation = "TC", type = LOCAL_VARIABLE,
   793                 // Only classes count, not methods.
   794                 genericLocation = {1, 0, 1, 0},
   795                 lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
   796                 lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
   797                 lvarIndex = ReferenceInfoUtil.IGNORE_VALUE),
   798     })
   799     @TestClass("Outer$Inner")
   800     public String testMethodNesting1() {
   801         return "class Outer {\n" +
   802                 " class Inner {\n" +
   803                 "  void foo() {\n" +
   804                 "    class MInner {}\n" +
   805                 "    @TA Outer . @TB Inner l1 = null;\n" +
   806                 "    @TC MInner l2 = null;\n" +
   807                 "  }\n" +
   808                 "}}\n";
   809     }
   811     @TADescriptions({
   812         @TADescription(annotation = "TA", type = NEW,
   813                 genericLocation = {},
   814                 offset = 0),
   815         @TADescription(annotation = "TB", type = NEW,
   816                 genericLocation = {1, 0},
   817                 offset = 0),
   818         @TADescription(annotation = "TC", type = NEW,
   819                 // Only classes count, not methods.
   820                 genericLocation = {1, 0, 1, 0},
   821                 offset = 12),
   822     })
   823     @TestClass("Outer$Inner")
   824     public String testMethodNesting2() {
   825         return "class Outer {\n" +
   826                 " class Inner {\n" +
   827                 "  void foo() {\n" +
   828                 "    class MInner {}\n" +
   829                 "    Object o1 = new @TA Outer . @TB Inner();" +
   830                 "    Object o2 = new @TC MInner();\n" +
   831                 "  }\n" +
   832                 "}}\n";
   833     }
   835     @TADescriptions({
   836         @TADescription(annotation = "TA", type = CLASS_EXTENDS,
   837                 genericLocation = {}, typeIndex = -1),
   838         @TADescription(annotation = "TB", type = CLASS_EXTENDS,
   839                 genericLocation = {3, 0}, typeIndex = -1),
   840         @TADescription(annotation = "TC", type = CLASS_EXTENDS,
   841                 genericLocation = {3, 1}, typeIndex = -1),
   842         @TADescription(annotation = "TD", type = CLASS_EXTENDS,
   843                 genericLocation = {1, 0}, typeIndex = -1),
   844         @TADescription(annotation = "TE", type = CLASS_EXTENDS,
   845                 genericLocation = {1, 0, 3, 0}, typeIndex = -1),
   846         @TADescription(annotation = "TF", type = CLASS_EXTENDS,
   847                 genericLocation = {1, 0, 3, 1}, typeIndex = -1)
   848     })
   849     @TestClass("GOuter$GInner$Test")
   850     public String testExtends1() {
   851         return "class GOuter<A, B> {\n" +
   852                 "  class GInner<X, Y> {\n" +
   853                 "    class Test extends @TA GOuter<@TB String, @TC String>.@TD GInner<@TE String, @TF String> {}" +
   854                 "  }" +
   855                 "}";
   856     }
   858     @TADescriptions({
   859         @TADescription(annotation = "TA", type = CLASS_TYPE_PARAMETER,
   860                 genericLocation = {}, paramIndex = 0),
   861         @TADescription(annotation = "TB", type = CLASS_TYPE_PARAMETER_BOUND,
   862                 genericLocation = {}, paramIndex = 0, boundIndex = 0),
   863         @TADescription(annotation = "TC", type = FIELD,
   864                 genericLocation = {}),
   865         @TADescription(annotation = "TD", type = FIELD,
   866                 genericLocation = {3, 0})
   867     })
   868     @TestClass("Test$1Nested")
   869     public String testNestedInMethod1() {
   870         return "class Test {\n" +
   871                 "  void foobar() {\n" +
   872                 "    class Nested<@TA X extends @TB Object> {\n" +
   873                 "      @TC List<@TD Object> f;\n" +
   874                 "    }\n" +
   875                 "  }" +
   876                 "}";
   877     }
   878 }

mercurial