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