test/tools/javac/annotations/typeAnnotations/failures/CantAnnotateStaticClass2.java

Thu, 31 Aug 2017 15:17:03 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:17:03 +0800
changeset 2525
2eb010b6cb22
parent 2167
d2fa3f7e964e
parent 0
959103a6100f
permissions
-rw-r--r--

merge

     1 /*
     2  * @test /nodynamiccopyright/
     3  * @bug 8006733 8006775
     4  * @summary Ensure behavior for nested types is correct.
     5  * @author Werner Dietl
     6  * @compile/fail/ref=CantAnnotateStaticClass2.out -XDrawDiagnostics CantAnnotateStaticClass2.java
     7  */
     9 import java.util.List;
    10 import java.util.ArrayList;
    11 import java.util.HashMap;
    12 import java.lang.annotation.*;
    14 class Top {
    15     @Target(ElementType.TYPE_USE)
    16     @interface TA {}
    18     @Target(ElementType.TYPE_USE)
    19     @interface TB {}
    21     @Target(ElementType.TYPE_USE)
    22     @interface TC {}
    24     static class Outer {
    25         class Inner {
    26             // Object o1 = Top.this;
    27             Object o2 = Outer.this;
    28             Object o3 = this;
    29         }
    30         static class SInner {
    31             // Object o1 = Top.this;
    32             // Object o2 = Outer.this;
    33             Object o3 = this;
    34         }
    35         interface IInner {
    36             // Object o1 = Top.this;
    37             // Object o2 = Outer.this;
    38             // Object o3 = this;
    39         }
    40     }
    42     @TB Outer f1;
    43     @TB Outer.Inner f1a;
    44     @TB Outer.SInner f2a; // err
    45     @TB Outer.IInner f3a; // err
    47     Outer. @TC Inner f1b;
    48     Outer. @TC SInner f2b;
    49     Outer. @TC IInner f3b;
    51     @TB Outer. @TC Inner f1c;
    52     @TB Outer. @TC SInner f2c; // err
    53     @TB Outer. @TC IInner f3c; // err
    55     @TA Top. @TB Outer g1; // err
    56     @TA Top. @TB Outer.Inner g1a; // err
    57     @TA Top. @TB Outer.SInner g2a; // err
    58     @TA Top. @TB Outer.IInner g3a; // err
    60     @TA Top. Outer. @TC Inner g1b; // err
    61     @TA Top. Outer. @TC SInner g2b; // err
    62     @TA Top. Outer. @TC IInner g3b; // err
    64     @TA Top. @TB Outer. @TC Inner g1c; // err
    65     @TA Top. @TB Outer. @TC SInner g2c; // err
    66     @TA Top. @TB Outer. @TC IInner g3c; // err
    68     @TB Outer f1r() { return null; }
    70     @TB Outer.Inner f1ra() { return null; }
    71     @TB Outer.SInner f2ra() { return null; } // err
    72     @TB Outer.IInner f3ra() { return null; } // err
    74     Outer. @TC Inner f1rb() { return null; }
    75     Outer. @TC SInner f2rb() { return null; }
    76     Outer. @TC IInner f3rb() { return null; }
    78     @TB Outer. @TC Inner f1rc() { return null; }
    79     @TB Outer. @TC SInner f2rc() { return null; } // err
    80     @TB Outer. @TC IInner f3rc() { return null; } // err
    82     void f1param(@TB Outer p,
    83             @TB Outer.Inner p1,
    84             Outer. @TC Inner p2,
    85             @TB Outer. @TC Inner p3) { }
    86     void f2param(@TB Outer p,
    87             @TB Outer.SInner p1, // err
    88             Outer. @TC SInner p2,
    89             @TB Outer. @TC SInner p3) { } // err
    90     void f3param(@TB Outer p,
    91             @TB Outer.IInner p1, // err
    92             Outer. @TC IInner p2,
    93             @TB Outer. @TC IInner p3) { } // err
    95     void f1cast(Object o) {
    96         Object l;
    97         l = (@TB Outer) o;
    98         l = (@TB Outer.Inner) o;
    99         l = (Outer. @TC Inner) o;
   100         l = (@TB Outer. @TC Inner) o;
   101     }
   102     void f2cast(Object o) {
   103         Object l;
   104         l = (@TB Outer) o;
   105         l = (@TB Outer.SInner) o; // err
   106         l = (Outer. @TC SInner) o;
   107         l = (@TB Outer. @TC SInner) o; // err
   108     }
   109     void f3cast(Object o) {
   110         Object l;
   111         l = (@TB Outer) o;
   112         l = (@TB Outer.IInner) o; // err
   113         l = (Outer. @TC IInner) o;
   114         l = (@TB Outer. @TC IInner) o; // err
   115     }
   117     List<@TB Outer> h1;
   119     List<@TB Outer.Inner> h1a;
   120     List<@TB Outer.SInner> h2a; // err
   121     List<@TB Outer.IInner> h3a; // err
   123     List<Outer. @TC Inner> h1b;
   124     List<Outer. @TC SInner> h2b;
   125     List<Outer. @TC IInner> h3b;
   127     List<@TB Outer. @TC Inner> h1c;
   128     List<@TB Outer. @TC SInner> h2c; // err
   129     List<@TB Outer. @TC IInner> h3c; // err
   131     List<@TA Top. @TB Outer> k1; // err
   133     List<@TA Top. @TB Outer.Inner> k1a; // err
   134     List<@TA Top. @TB Outer.SInner> k2a; // err
   135     List<@TA Top. @TB Outer.IInner> k3a; // err
   137     List<@TA Top. Outer. @TC Inner> k1b; // err
   138     List<@TA Top. Outer. @TC SInner> k2b; // err
   139     List<@TA Top. Outer. @TC IInner> k3b; // err
   141     List<@TA Top. @TB Outer. @TC Inner> k1c; // err
   142     List<@TA Top. @TB Outer. @TC SInner> k2c; // err
   143     List<@TA Top. @TB Outer. @TC IInner> k3c; // err
   146     List<@TB Outer> g1r() { return null; }
   148     List<@TB Outer.Inner> g1ra() { return null; }
   149     List<@TB Outer.SInner> g2ra() { return null; } // err
   150     List<@TB Outer.IInner> g3ra() { return null; } // err
   152     List<Outer. @TC Inner> g1rb() { return null; }
   153     List<Outer. @TC SInner> g2rb() { return null; }
   154     List<Outer. @TC IInner> g3rb() { return null; }
   156     List<@TB Outer. @TC Inner> g1rc() { return null; }
   157     List<@TB Outer. @TC SInner> g2rc() { return null; } // err
   158     List<@TB Outer. @TC IInner> g3rc() { return null; } // err
   160     void g1param(List<@TB Outer> p,
   161             List<@TB Outer.Inner> p1,
   162             List<Outer. @TC Inner> p2,
   163             List<@TB Outer. @TC Inner> p3) { }
   164     void g2param(List<@TB Outer> p,
   165             List<@TB Outer.SInner> p1, // err
   166             List<Outer. @TC SInner> p2,
   167             List<@TB Outer. @TC SInner> p3) { } // err
   168     void g3param(List<@TB Outer> p,
   169             List<@TB Outer.IInner> p1, // err
   170             List<Outer. @TC IInner> p2,
   171             List<@TB Outer. @TC IInner> p3) { } // err
   173     void g1new(Object o) {
   174         Object l;
   175         l = new @TB ArrayList<@TB Outer>();
   176         l = new @TB ArrayList<@TB Outer.Inner>();
   177         l = new @TB HashMap<String, Outer. @TC Inner>();
   178         l = new @TB HashMap<String, @TB Outer. Inner>();
   179         l = new @TB HashMap<String, @TB Outer. @TC Inner>();
   180     }
   181     void g2new(Object o) {
   182         Object l;
   183         l = new @TB ArrayList<@TB Outer>();
   184         l = new @TB ArrayList<@TB Outer.SInner>(); // err
   185         l = new @TB HashMap<String, Outer. @TC SInner>();
   186         l = new @TB HashMap<String, @TB Outer. SInner>(); // err
   187         l = new @TB HashMap<String, @TB Outer. @TC SInner>(); // err
   188     }
   189     void g3new(Object o) {
   190         Object l;
   191         l = new @TB ArrayList<@TB Outer>();
   192         l = new @TB ArrayList<@TB Outer.IInner>(); // err
   193         l = new @TB HashMap<String, Outer. @TC IInner>();
   194         l = new @TB HashMap<String, @TB Outer. IInner>(); // err
   195         l = new @TB HashMap<String, @TB Outer. @TC IInner>(); // err
   196     }
   197     void g4new(Object o) {
   198         Object l;
   199         l = new @TB ArrayList<@TA Top. @TB Outer>(); // err
   200         l = new @TB ArrayList<@TA Top. @TB Outer.IInner>(); // err
   201         l = new @TB HashMap<String, @TA Top. Outer. @TC IInner>(); // err
   202         l = new @TB HashMap<String, @TA Top. @TB Outer. IInner>(); // err
   203         l = new @TB HashMap<String, @TA Top. @TB Outer. @TC IInner>(); // err
   204         l = new @TB HashMap<String, @TA @TB @TC Top. Outer. IInner>(); // err
   205     }
   206 }

mercurial