langtools/test/tools/javac/annotations/repeatingAnnotations/combo/ReflectionTest.java
changeset 40231 ba38ad2dd137
parent 30730 d3ce7619db2c
equal deleted inserted replaced
40230:3e8975c92291 40231:ba38ad2dd137
     1 /*
     1 /*
     2  * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     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
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    21  * questions.
    21  * questions.
    22  */
    22  */
    23 
    23 
    24 /**
    24 /**
    25  * @test
    25  * @test
    26  * @bug      8001457 8027477
    26  * @bug      8001457 8027477 8163113
    27  * @author   sogoel
    27  * @author   sogoel
    28  * @summary  Reflection api tests
    28  * @summary  Reflection api tests
    29  * @modules jdk.compiler
    29  * @modules jdk.compiler
    30  * @build    Helper
    30  * @build    Helper
    31  * @compile  expectedFiles/ExpectedBase.java expectedFiles/ExpectedContainer.java
    31  * @compile  expectedFiles/ExpectedBase.java expectedFiles/ExpectedContainer.java
   481             }
   481             }
   482         },
   482         },
   483         BasicContainer_Legacy(
   483         BasicContainer_Legacy(
   484         "@ExpectedBase(value = Foo.class, "
   484         "@ExpectedBase(value = Foo.class, "
   485                 + "getAnnotationVal = \"NULL\","
   485                 + "getAnnotationVal = \"NULL\","
   486                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   486                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   487                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   487                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   488                 + "getDeclAnnoVal = \"NULL\", " + "getAnnosArgs = {}, "
   488                 + "getDeclAnnoVal = \"NULL\", " + "getAnnosArgs = {}, "
   489                 + "getDeclAnnosArgs = {} )",
   489                 + "getDeclAnnosArgs = {} )",
   490         "@ExpectedContainer(value=FooContainer.class, "
   490         "@ExpectedContainer(value=FooContainer.class, "
   491                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
   491                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
   492                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   492                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   493                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   493                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   494                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
   494                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
   495                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   495                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   496                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"} )") {
   496                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"} )") {
   497 
   497 
   498             @Override
   498             @Override
   499             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   499             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   500                     String className) {
   500                     String className) {
   501                 String anno = "";
   501                 String anno = "";
   581         },
   581         },
   582         SingleAndContainerOnSuper_Legacy(
   582         SingleAndContainerOnSuper_Legacy(
   583         "@ExpectedBase(value = Foo.class, "
   583         "@ExpectedBase(value = Foo.class, "
   584                 + "getAnnotationVal = \"@Foo(value=0)\","
   584                 + "getAnnotationVal = \"@Foo(value=0)\","
   585                 + "getAnnotationsVals = {"
   585                 + "getAnnotationsVals = {"
   586                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   586                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   587                 + "getDeclAnnosVals = {"
   587                 + "getDeclAnnosVals = {"
   588                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   588                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   589                 + "getDeclAnnoVal = \"@Foo(value=0)\", "
   589                 + "getDeclAnnoVal = \"@Foo(value=0)\", "
   590                 + "getAnnosArgs = {\"@Foo(value=0)\"}, "
   590                 + "getAnnosArgs = {\"@Foo(value=0)\"}, "
   591                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"} )",
   591                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"} )",
   592         "@ExpectedContainer(value=FooContainer.class, "
   592         "@ExpectedContainer(value=FooContainer.class, "
   593                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
   593                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
   594                 + "getAnnotationsVals = {"
   594                 + "getAnnotationsVals = {"
   595                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   595                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   596                 + "getDeclAnnosVals = {"
   596                 + "getDeclAnnosVals = {"
   597                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   597                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   598                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
   598                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
   599                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   599                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   600                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"} )") {
   600                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"} )") {
   601 
   601 
   602             @Override
   602             @Override
   603             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   603             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   604                     String className) {
   604                     String className) {
   605                 String anno = "";
   605                 String anno = "";
   689             }
   689             }
   690         },
   690         },
   691         BasicContainer_Inherited_Legacy(
   691         BasicContainer_Inherited_Legacy(
   692         "@ExpectedBase(value = Foo.class, "
   692         "@ExpectedBase(value = Foo.class, "
   693                 + "getAnnotationVal = \"NULL\","
   693                 + "getAnnotationVal = \"NULL\","
   694                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   694                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   695                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
   695                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
   696                 + "getDeclAnnoVal = \"NULL\", "
   696                 + "getDeclAnnoVal = \"NULL\", "
   697                 + "getAnnosArgs = {}, "
   697                 + "getAnnosArgs = {}, "
   698                 + "getDeclAnnosArgs = {} )",
   698                 + "getDeclAnnosArgs = {} )",
   699         "@ExpectedContainer(value=FooContainer.class, "
   699         "@ExpectedContainer(value=FooContainer.class, "
   700                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
   700                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
   701                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   701                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   702                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
   702                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
   703                 + "getDeclAnnoVal = \"NULL\", "
   703                 + "getDeclAnnoVal = \"NULL\", "
   704                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   704                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   705                 + "getDeclAnnosArgs = {} )") {
   705                 + "getDeclAnnosArgs = {} )") {
   706 
   706 
   707             @Override
   707             @Override
   708             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   708             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   709                     String className) {
   709                     String className) {
   763         },
   763         },
   764         ContainerOnSuperSingleOnSub_Inherited_Legacy(
   764         ContainerOnSuperSingleOnSub_Inherited_Legacy(
   765         "@ExpectedBase(value=Foo.class, "
   765         "@ExpectedBase(value=Foo.class, "
   766                 + "getAnnotationVal = \"@Foo(value=0)\", "
   766                 + "getAnnotationVal = \"@Foo(value=0)\", "
   767                 + "getAnnotationsVals = {"
   767                 + "getAnnotationsVals = {"
   768                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=0)\"}, "
   768                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=0)\"}, "
   769                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
   769                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
   770                 + "getDeclAnnoVal = \"@Foo(value=0)\","
   770                 + "getDeclAnnoVal = \"@Foo(value=0)\","
   771                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
   771                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
   772                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
   772                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
   773         "@ExpectedContainer(value=FooContainer.class, "
   773         "@ExpectedContainer(value=FooContainer.class, "
   774                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
   774                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
   775                 + "getAnnotationsVals = {"
   775                 + "getAnnotationsVals = {"
   776                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=0)\"}, "
   776                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=0)\"}, "
   777                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
   777                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
   778                 + "getDeclAnnoVal = \"NULL\","
   778                 + "getDeclAnnoVal = \"NULL\","
   779                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
   779                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
   780                 + "getDeclAnnosArgs = {})") {
   780                 + "getDeclAnnosArgs = {})") {
   781 
   781 
   782             @Override
   782             @Override
   783             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   783             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   784                     String className) {
   784                     String className) {
   842         // fail with ordering issues
   842         // fail with ordering issues
   843         ContainerAndSingleOnSuperSingleOnSub_Inherited_Legacy(
   843         ContainerAndSingleOnSuperSingleOnSub_Inherited_Legacy(
   844         "@ExpectedBase(value=Foo.class, "
   844         "@ExpectedBase(value=Foo.class, "
   845                 + "getAnnotationVal = \"@Foo(value=0)\", "
   845                 + "getAnnotationVal = \"@Foo(value=0)\", "
   846                 + "getAnnotationsVals = {"
   846                 + "getAnnotationsVals = {"
   847                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=0)\"}, "
   847                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=0)\"}, "
   848                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
   848                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
   849                 + "getDeclAnnoVal = \"@Foo(value=0)\","
   849                 + "getDeclAnnoVal = \"@Foo(value=0)\","
   850                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
   850                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
   851                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
   851                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
   852         "@ExpectedContainer(value=FooContainer.class, "
   852         "@ExpectedContainer(value=FooContainer.class, "
   853                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
   853                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
   854                 + "getAnnotationsVals = {"
   854                 + "getAnnotationsVals = {"
   855                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=0)\"}, "
   855                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=0)\"}, "
   856                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
   856                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
   857                 + "getDeclAnnoVal = \"NULL\","
   857                 + "getDeclAnnoVal = \"NULL\","
   858                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
   858                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
   859                 + "getDeclAnnosArgs = {})") {
   859                 + "getDeclAnnosArgs = {})") {
   860 
   860 
   861             @Override
   861             @Override
   862             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   862             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   863                     String className) {
   863                     String className) {
   921         // fail with ordering issues
   921         // fail with ordering issues
   922         SingleOnSuperContainerOnSub_Inherited_Legacy(
   922         SingleOnSuperContainerOnSub_Inherited_Legacy(
   923         "@ExpectedBase(value=Foo.class, "
   923         "@ExpectedBase(value=Foo.class, "
   924                 + "getAnnotationVal = \"@Foo(value=0)\", "
   924                 + "getAnnotationVal = \"@Foo(value=0)\", "
   925                 + "getAnnotationsVals = {"
   925                 + "getAnnotationsVals = {"
   926                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   926                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   927                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
   927                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
   928                 + "getDeclAnnoVal = \"NULL\","
   928                 + "getDeclAnnoVal = \"NULL\","
   929                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
   929                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
   930                 + "getDeclAnnosArgs = {})",
   930                 + "getDeclAnnosArgs = {})",
   931         "@ExpectedContainer(value=FooContainer.class, "
   931         "@ExpectedContainer(value=FooContainer.class, "
   932                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
   932                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
   933                 + "getAnnotationsVals = {"
   933                 + "getAnnotationsVals = {"
   934                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
   934                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
   935                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
   935                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
   936                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
   936                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
   937                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
   937                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
   938                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"})") {
   938                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
   939 
   939 
   940             @Override
   940             @Override
   941             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   941             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
   942                     String className) {
   942                     String className) {
   943                 String anno = "";
   943                 String anno = "";
   998         // fail with ordering issues
   998         // fail with ordering issues
   999         SingleOnSuperContainerAndSingleOnSub_Inherited_Legacy(
   999         SingleOnSuperContainerAndSingleOnSub_Inherited_Legacy(
  1000         "@ExpectedBase(value=Foo.class, "
  1000         "@ExpectedBase(value=Foo.class, "
  1001                 + "getAnnotationVal = \"@Foo(value=3)\", "
  1001                 + "getAnnotationVal = \"@Foo(value=3)\", "
  1002                 + "getAnnotationsVals = {"
  1002                 + "getAnnotationsVals = {"
  1003                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=3)\"}, "
  1003                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"}, "
  1004                 + "getDeclAnnosVals = {"
  1004                 + "getDeclAnnosVals = {"
  1005                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=3)\"},"
  1005                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"},"
  1006                 + "getDeclAnnoVal = \"@Foo(value=3)\","
  1006                 + "getDeclAnnoVal = \"@Foo(value=3)\","
  1007                 + "getAnnosArgs = {\"@Foo(value=3)\"},"
  1007                 + "getAnnosArgs = {\"@Foo(value=3)\"},"
  1008                 + "getDeclAnnosArgs = {\"@Foo(value=3)\"})",
  1008                 + "getDeclAnnosArgs = {\"@Foo(value=3)\"})",
  1009         "@ExpectedContainer(value=FooContainer.class, "
  1009         "@ExpectedContainer(value=FooContainer.class, "
  1010                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1010                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1011                 + "getAnnotationsVals = {"
  1011                 + "getAnnotationsVals = {"
  1012                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=3)\"}, "
  1012                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"}, "
  1013                 + "getDeclAnnosVals = {"
  1013                 + "getDeclAnnosVals = {"
  1014                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=3)\"},"
  1014                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"},"
  1015                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
  1015                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
  1016                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1016                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1017                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"})") {
  1017                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
  1018 
  1018 
  1019             @Override
  1019             @Override
  1020             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1020             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1021                     String className) {
  1021                     String className) {
  1022                 String anno = "";
  1022                 String anno = "";
  1075             }
  1075             }
  1076         },
  1076         },
  1077         BasicRepeatable(
  1077         BasicRepeatable(
  1078         "@ExpectedBase(value=Foo.class, "
  1078         "@ExpectedBase(value=Foo.class, "
  1079                 + "getAnnotationVal = \"NULL\", "
  1079                 + "getAnnotationVal = \"NULL\", "
  1080                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\" }, "
  1080                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\" }, "
  1081                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1081                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1082                 + "getDeclAnnoVal = \"NULL\","
  1082                 + "getDeclAnnoVal = \"NULL\","
  1083                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
  1083                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
  1084                 + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
  1084                 + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
  1085         "@ExpectedContainer(value=FooContainer.class, "
  1085         "@ExpectedContainer(value=FooContainer.class, "
  1086                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
  1086                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
  1087                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1087                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1088                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1088                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1089                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
  1089                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
  1090                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1090                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1091                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"} )") {
  1091                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"} )") {
  1092 
  1092 
  1093             @Override
  1093             @Override
  1094             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1094             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1095                     String className) {
  1095                     String className) {
  1096                 String anno = "";
  1096                 String anno = "";
  1177         },
  1177         },
  1178         BasicContainerRepeatable(
  1178         BasicContainerRepeatable(
  1179         "@ExpectedBase(value=Foo.class, "
  1179         "@ExpectedBase(value=Foo.class, "
  1180                 + "getAnnotationVal = \"NULL\", "
  1180                 + "getAnnotationVal = \"NULL\", "
  1181                 + "getAnnotationsVals = {"
  1181                 + "getAnnotationsVals = {"
  1182                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1182                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1183                 + "getDeclAnnosVals = {"
  1183                 + "getDeclAnnosVals = {"
  1184                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1184                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1185                 + "getDeclAnnoVal = \"NULL\","
  1185                 + "getDeclAnnoVal = \"NULL\","
  1186                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
  1186                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
  1187                 + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
  1187                 + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
  1188         "@ExpectedContainer(value=FooContainer.class, "
  1188         "@ExpectedContainer(value=FooContainer.class, "
  1189                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
  1189                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
  1190                 + "getAnnotationsVals = {"
  1190                 + "getAnnotationsVals = {"
  1191                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1191                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1192                 + "getDeclAnnosVals = {"
  1192                 + "getDeclAnnosVals = {"
  1193                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1193                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1194                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
  1194                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
  1195                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1195                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1196                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"} )") {
  1196                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"} )") {
  1197 
  1197 
  1198             @Override
  1198             @Override
  1199             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1199             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1200                     String className) {
  1200                     String className) {
  1201                 String anno = "";
  1201                 String anno = "";
  1281             }
  1281             }
  1282         },
  1282         },
  1283         BasicContainerRepeatable_Inherited(
  1283         BasicContainerRepeatable_Inherited(
  1284         "@ExpectedBase(value=Foo.class, "
  1284         "@ExpectedBase(value=Foo.class, "
  1285                 + "getAnnotationVal = \"NULL\", "
  1285                 + "getAnnotationVal = \"NULL\", "
  1286                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1286                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1287                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
  1287                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
  1288                 + "getDeclAnnoVal = \"NULL\", "
  1288                 + "getDeclAnnoVal = \"NULL\", "
  1289                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
  1289                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
  1290                 + "getDeclAnnosArgs = {})",
  1290                 + "getDeclAnnosArgs = {})",
  1291         "@ExpectedContainer(value=FooContainer.class, "
  1291         "@ExpectedContainer(value=FooContainer.class, "
  1292                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1292                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1293                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1293                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1294                 + "getDeclAnnosVals = { \"ExpectedBase\", \"ExpectedContainer\"}, "
  1294                 + "getDeclAnnosVals = { \"ExpectedBase\", \"ExpectedContainer\"}, "
  1295                 + "getDeclAnnoVal = \"NULL\", "
  1295                 + "getDeclAnnoVal = \"NULL\", "
  1296                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1296                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1297                 + "getDeclAnnosArgs = {})") {
  1297                 + "getDeclAnnosArgs = {})") {
  1298 
  1298 
  1299             @Override
  1299             @Override
  1300             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1300             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1301                     String className) {
  1301                     String className) {
  1354             }
  1354             }
  1355         },
  1355         },
  1356         RepeatableAnnoInherited(
  1356         RepeatableAnnoInherited(
  1357         "@ExpectedBase(value=Foo.class, "
  1357         "@ExpectedBase(value=Foo.class, "
  1358                 + "getAnnotationVal = \"NULL\", "
  1358                 + "getAnnotationVal = \"NULL\", "
  1359                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1359                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1360                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
  1360                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
  1361                 + // ignores inherited annotations
  1361                 + // ignores inherited annotations
  1362                 "getDeclAnnoVal = \"NULL\", "
  1362                 "getDeclAnnoVal = \"NULL\", "
  1363                 + // ignores inherited
  1363                 + // ignores inherited
  1364                 "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
  1364                 "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
  1365                 + "getDeclAnnosArgs = {})", // ignores inherited
  1365                 + "getDeclAnnosArgs = {})", // ignores inherited
  1366         "@ExpectedContainer(value=FooContainer.class, "
  1366         "@ExpectedContainer(value=FooContainer.class, "
  1367                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1367                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1368                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1368                 + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1369                 + "getDeclAnnosVals = { \"ExpectedBase\", \"ExpectedContainer\"}, "
  1369                 + "getDeclAnnosVals = { \"ExpectedBase\", \"ExpectedContainer\"}, "
  1370                 + // ignores inherited annotations
  1370                 + // ignores inherited annotations
  1371                 "getDeclAnnoVal = \"NULL\", "
  1371                 "getDeclAnnoVal = \"NULL\", "
  1372                 + // ignores inherited
  1372                 + // ignores inherited
  1373                 "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1373                 "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1374                 + "getDeclAnnosArgs = {})") { // ignores inherited
  1374                 + "getDeclAnnosArgs = {})") { // ignores inherited
  1375 
  1375 
  1376             @Override
  1376             @Override
  1377             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1377             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1378                     String className) {
  1378                     String className) {
  1434         // fail with ordering issues
  1434         // fail with ordering issues
  1435         SingleAnnoWithContainer(
  1435         SingleAnnoWithContainer(
  1436         "@ExpectedBase(value=Foo.class, "
  1436         "@ExpectedBase(value=Foo.class, "
  1437                 + "getAnnotationVal = \"@Foo(value=0)\", "
  1437                 + "getAnnotationVal = \"@Foo(value=0)\", "
  1438                 + "getAnnotationsVals = {"
  1438                 + "getAnnotationsVals = {"
  1439                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1439                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1440                 + "getDeclAnnosVals = {"
  1440                 + "getDeclAnnosVals = {"
  1441                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1441                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1442                 + "getDeclAnnoVal = \"@Foo(value=0)\","
  1442                 + "getDeclAnnoVal = \"@Foo(value=0)\","
  1443                 + "getAnnosArgs = {\"@Foo(value=0)\", \"@Foo(value=1)\", \"@Foo(value=2)\"},"
  1443                 + "getAnnosArgs = {\"@Foo(value=0)\", \"@Foo(value=1)\", \"@Foo(value=2)\"},"
  1444                 + "getDeclAnnosArgs = {\"@Foo(value=0)\", \"@Foo(value=1)\",\"@Foo(value=2)\"})",
  1444                 + "getDeclAnnosArgs = {\"@Foo(value=0)\", \"@Foo(value=1)\",\"@Foo(value=2)\"})",
  1445         "@ExpectedContainer(value=FooContainer.class, "
  1445         "@ExpectedContainer(value=FooContainer.class, "
  1446                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1446                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1447                 + "getAnnotationsVals = {"
  1447                 + "getAnnotationsVals = {"
  1448                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1448                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1449                 + "getDeclAnnosVals = {"
  1449                 + "getDeclAnnosVals = {"
  1450                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1450                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1451                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
  1451                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
  1452                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1452                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1453                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"})") {
  1453                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
  1454 
  1454 
  1455             @Override
  1455             @Override
  1456             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1456             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1457                     String className) {
  1457                     String className) {
  1458                 String anno = "";
  1458                 String anno = "";
  1622         // fail with ordering issues
  1622         // fail with ordering issues
  1623         RepeatableOnSuperSingleOnSub_Inherited(
  1623         RepeatableOnSuperSingleOnSub_Inherited(
  1624         "@ExpectedBase(value=Foo.class, "
  1624         "@ExpectedBase(value=Foo.class, "
  1625                 + "getAnnotationVal = \"@Foo(value=3)\", "
  1625                 + "getAnnotationVal = \"@Foo(value=3)\", "
  1626                 + "getAnnotationsVals = {"
  1626                 + "getAnnotationsVals = {"
  1627                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1627                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1628                 + //override every annotation on superClass
  1628                 + //override every annotation on superClass
  1629                 "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\"}, "
  1629                 "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\"}, "
  1630                 + // ignores inherited annotations
  1630                 + // ignores inherited annotations
  1631                 "getDeclAnnoVal = \"@Foo(value=3)\", " // ignores inherited
  1631                 "getDeclAnnoVal = \"@Foo(value=3)\", " // ignores inherited
  1632                 + "getAnnosArgs = {\"@Foo(value=3)\"}, "
  1632                 + "getAnnosArgs = {\"@Foo(value=3)\"}, "
  1633                 + "getDeclAnnosArgs = { \"@Foo(value=3)\" })", // ignores inherited
  1633                 + "getDeclAnnosArgs = { \"@Foo(value=3)\" })", // ignores inherited
  1634         "@ExpectedContainer(value=FooContainer.class, "
  1634         "@ExpectedContainer(value=FooContainer.class, "
  1635                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1635                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1636                 + "getAnnotationsVals = {"
  1636                 + "getAnnotationsVals = {"
  1637                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1637                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1638                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\"}, "
  1638                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\"}, "
  1639                 + // ignores inherited annotations
  1639                 + // ignores inherited annotations
  1640                 "getDeclAnnoVal = \"NULL\", "
  1640                 "getDeclAnnoVal = \"NULL\", "
  1641                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1641                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1642                 + "getDeclAnnosArgs = {}) // ignores inherited ") {
  1642                 + "getDeclAnnosArgs = {}) // ignores inherited ") {
  1643 
  1643 
  1644             @Override
  1644             @Override
  1645             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1645             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1646                     String className) {
  1646                     String className) {
  1702         // fail with ordering issues
  1702         // fail with ordering issues
  1703         SingleOnSuperRepeatableOnSub_Inherited(
  1703         SingleOnSuperRepeatableOnSub_Inherited(
  1704         "@ExpectedBase(value=Foo.class, "
  1704         "@ExpectedBase(value=Foo.class, "
  1705                 + "getAnnotationVal = \"@Foo(value=0)\", "
  1705                 + "getAnnotationVal = \"@Foo(value=0)\", "
  1706                 + "getAnnotationsVals = {"
  1706                 + "getAnnotationsVals = {"
  1707                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1707                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1708                 + //override every annotation on superClass
  1708                 + //override every annotation on superClass
  1709                 "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1709                 "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1710                 + // ignores inherited annotations
  1710                 + // ignores inherited annotations
  1711                 "getDeclAnnoVal = \"NULL\","// ignores inherited
  1711                 "getDeclAnnoVal = \"NULL\","// ignores inherited
  1712                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
  1712                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
  1713                 + "getDeclAnnosArgs = { \"@Foo(value=1)\", \"@Foo(value=2)\"})",
  1713                 + "getDeclAnnosArgs = { \"@Foo(value=1)\", \"@Foo(value=2)\"})",
  1714         "@ExpectedContainer(value=FooContainer.class, "
  1714         "@ExpectedContainer(value=FooContainer.class, "
  1715                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1715                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1716                 + "getAnnotationsVals = {"
  1716                 + "getAnnotationsVals = {"
  1717                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1717                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1718                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1718                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1719                 + // ignores inherited annotations
  1719                 + // ignores inherited annotations
  1720                 "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "// ignores inherited
  1720                 "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "// ignores inherited
  1721                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1721                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1722                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"})") {
  1722                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
  1723 
  1723 
  1724             @Override
  1724             @Override
  1725             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1725             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1726                     String className) {
  1726                     String className) {
  1727                 String anno = "";
  1727                 String anno = "";
  1783         // fail with ordering issues
  1783         // fail with ordering issues
  1784         ContainerOnSuperSingleOnSub_Inherited(
  1784         ContainerOnSuperSingleOnSub_Inherited(
  1785         "@ExpectedBase(value=Foo.class, "
  1785         "@ExpectedBase(value=Foo.class, "
  1786                 + "getAnnotationVal = \"@Foo(value=0)\", "
  1786                 + "getAnnotationVal = \"@Foo(value=0)\", "
  1787                 + "getAnnotationsVals = {"
  1787                 + "getAnnotationsVals = {"
  1788                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1788                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1789                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
  1789                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
  1790                 + "getDeclAnnoVal = \"@Foo(value=0)\","
  1790                 + "getDeclAnnoVal = \"@Foo(value=0)\","
  1791                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
  1791                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
  1792                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
  1792                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
  1793         "@ExpectedContainer(value=FooContainer.class, "
  1793         "@ExpectedContainer(value=FooContainer.class, "
  1794                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1794                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1795                 + "getAnnotationsVals = {"
  1795                 + "getAnnotationsVals = {"
  1796                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1796                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1797                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
  1797                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
  1798                 + "getDeclAnnoVal = \"NULL\","
  1798                 + "getDeclAnnoVal = \"NULL\","
  1799                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1799                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1800                 + "getDeclAnnosArgs = {})") {
  1800                 + "getDeclAnnosArgs = {})") {
  1801 
  1801 
  1802             @Override
  1802             @Override
  1803             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1803             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1804                     String className) {
  1804                     String className) {
  1861         // fail with ordering issues
  1861         // fail with ordering issues
  1862         SingleOnSuperContainerOnSub_Inherited(
  1862         SingleOnSuperContainerOnSub_Inherited(
  1863         "@ExpectedBase(value=Foo.class, "
  1863         "@ExpectedBase(value=Foo.class, "
  1864                 + "getAnnotationVal = \"@Foo(value=0)\", "
  1864                 + "getAnnotationVal = \"@Foo(value=0)\", "
  1865                 + "getAnnotationsVals = {"
  1865                 + "getAnnotationsVals = {"
  1866                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1866                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1867                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1867                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1868                 + "getDeclAnnoVal = \"NULL\","
  1868                 + "getDeclAnnoVal = \"NULL\","
  1869                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
  1869                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
  1870                 + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
  1870                 + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
  1871         "@ExpectedContainer(value=FooContainer.class, "
  1871         "@ExpectedContainer(value=FooContainer.class, "
  1872                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1872                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1873                 + "getAnnotationsVals = {"
  1873                 + "getAnnotationsVals = {"
  1874                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  1874                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  1875                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1875                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1876                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
  1876                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
  1877                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1877                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1878                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"})") {
  1878                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
  1879 
  1879 
  1880             @Override
  1880             @Override
  1881             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1881             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1882                      String className) {
  1882                      String className) {
  1883                 String anno = "";
  1883                 String anno = "";
  1939         // fail with ordering issues
  1939         // fail with ordering issues
  1940         SingleOnSuperContainerAndSingleOnSub_Inherited(
  1940         SingleOnSuperContainerAndSingleOnSub_Inherited(
  1941         "@ExpectedBase(value=Foo.class, "
  1941         "@ExpectedBase(value=Foo.class, "
  1942                 + "getAnnotationVal = \"@Foo(value=3)\", "
  1942                 + "getAnnotationVal = \"@Foo(value=3)\", "
  1943                 + "getAnnotationsVals = {"
  1943                 + "getAnnotationsVals = {"
  1944                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=3)\"}, "
  1944                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"}, "
  1945                 + "getDeclAnnosVals = {"
  1945                 + "getDeclAnnosVals = {"
  1946                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=3)\"},"
  1946                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"},"
  1947                 + "getDeclAnnoVal = \"@Foo(value=3)\","
  1947                 + "getDeclAnnoVal = \"@Foo(value=3)\","
  1948                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\", \"@Foo(value=3)\"},"
  1948                 + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\", \"@Foo(value=3)\"},"
  1949                 + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\", \"@Foo(value=3)\"})",
  1949                 + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\", \"@Foo(value=3)\"})",
  1950         "@ExpectedContainer(value=FooContainer.class, "
  1950         "@ExpectedContainer(value=FooContainer.class, "
  1951                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  1951                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  1952                 + "getAnnotationsVals = {"
  1952                 + "getAnnotationsVals = {"
  1953                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=3)\"}, "
  1953                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"}, "
  1954                 + "getDeclAnnosVals = {"
  1954                 + "getDeclAnnosVals = {"
  1955                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", \"@Foo(value=3)\"},"
  1955                 +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"},"
  1956                 + "getDeclAnnoVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\","
  1956                 + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
  1957                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  1957                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  1958                 + "getDeclAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"})") {
  1958                 + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
  1959 
  1959 
  1960             @Override
  1960             @Override
  1961             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1961             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  1962                     String className) {
  1962                     String className) {
  1963                 String anno = "";
  1963                 String anno = "";
  2019         // fail with ordering issues
  2019         // fail with ordering issues
  2020         ContainerAndSingleOnSuperSingleOnSub_Inherited(
  2020         ContainerAndSingleOnSuperSingleOnSub_Inherited(
  2021         "@ExpectedBase(value=Foo.class, "
  2021         "@ExpectedBase(value=Foo.class, "
  2022                 + "getAnnotationVal = \"@Foo(value=0)\", "
  2022                 + "getAnnotationVal = \"@Foo(value=0)\", "
  2023                 + "getAnnotationsVals = {"
  2023                 + "getAnnotationsVals = {"
  2024                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  2024                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  2025                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
  2025                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
  2026                 + "getDeclAnnoVal = \"@Foo(value=0)\","
  2026                 + "getDeclAnnoVal = \"@Foo(value=0)\","
  2027                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
  2027                 + "getAnnosArgs = {\"@Foo(value=0)\"},"
  2028                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
  2028                 + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
  2029         "@ExpectedContainer(value=FooContainer.class, "
  2029         "@ExpectedContainer(value=FooContainer.class, "
  2030                 + "getAnnotationVal = \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\", "
  2030                 + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
  2031                 + "getAnnotationsVals = {"
  2031                 + "getAnnotationsVals = {"
  2032                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"}, "
  2032                 + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
  2033                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
  2033                 + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
  2034                 + "getDeclAnnoVal = \"NULL\","
  2034                 + "getDeclAnnoVal = \"NULL\","
  2035                 + "getAnnosArgs = {\"@FooContainer(value=[@Foo(value=1), @Foo(value=2)])\"},"
  2035                 + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
  2036                 + "getDeclAnnosArgs = {})") {
  2036                 + "getDeclAnnosArgs = {})") {
  2037 
  2037 
  2038             @Override
  2038             @Override
  2039             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  2039             public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
  2040                     String className) {
  2040                     String className) {