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

Tue, 15 Oct 2013 15:57:13 -0700

author
jjg
date
Tue, 15 Oct 2013 15:57:13 -0700
changeset 2134
b0c086cd4520
parent 2103
b1b4a6dcc282
child 2525
2eb010b6cb22
permissions
-rw-r--r--

8026564: import changes from type-annotations forest
Reviewed-by: jjg
Contributed-by: wdietl@gmail.com, steve.sides@oracle.com

     1 /*
     2  * @test /nodynamiccopyright/
     3  * @bug 8006733 8006775
     4  * @summary Ensure behavior for nested types is correct.
     5  * @author Werner Dietl
     6  * @compile CantAnnotateStaticClass.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     class Outer {
    25         class Inner {
    26             Object o1 = Top.this;
    27             Object o2 = Outer.this;
    28             Object o3 = this;
    29         }
    30         // Illegal
    31         // static class SInner {}
    32         // interface IInner {}
    33     }
    35     // All combinations are OK
    37     Top.@TB Outer f1;
    38     @TB Outer.Inner f1a;
    39     Outer. @TC Inner f1b;
    40     @TB Outer. @TC Inner f1c;
    42     @TA Top. @TB Outer f2;
    43     @TA Top. @TB Outer.Inner f2a;
    44     @TA Top. Outer. @TC Inner f2b;
    45     @TA Top. @TB Outer. @TC Inner f2c;
    47     @TB Outer f1r() { return null; }
    48     @TB Outer.Inner f1ra() { return null; }
    49     Outer. @TC Inner f1rb() { return null; }
    50     @TB Outer. @TC Inner f1rc() { return null; }
    52     void f1param(@TB Outer p,
    53             @TB Outer.Inner p1,
    54             Outer. @TC Inner p2,
    55             @TB Outer. @TC Inner p3) { }
    57     void f1cast(Object o) {
    58         Object l;
    59         l = (@TB Outer) o;
    60         l = (@TB Outer.Inner) o;
    61         l = (Outer. @TC Inner) o;
    62         l = (@TB Outer. @TC Inner) o;
    63     }
    65     List<@TB Outer> g1;
    66     List<@TB Outer.Inner> g1a;
    67     List<Outer. @TC Inner> g1b;
    68     List<@TB Outer. @TC Inner> g1c;
    70     List<@TA Top. @TB Outer> g2;
    71     List<@TA Top. @TB Outer.Inner> g2a;
    72     List<@TA Top. Outer. @TC Inner> g2b;
    73     List<@TA Top. @TB Outer. @TC Inner> g2c;
    75     List<@TB Outer> g1r() { return null; }
    76     List<@TB Outer.Inner> g1ra() { return null; }
    77     List<Outer. @TC Inner> g1rb() { return null; }
    78     List<@TB Outer. @TC Inner> g1rc() { return null; }
    80     void g1param(List<@TB Outer> p,
    81             List<@TB Outer.Inner> p1,
    82             List<Outer. @TC Inner> p2,
    83             List<@TB Outer. @TC Inner> p3) { }
    85     void g1new(Object o) {
    86         Object l;
    87         l = new @TB ArrayList<@TB Outer>();
    88         l = new @TB ArrayList<@TB Outer.Inner>();
    89         l = new @TB HashMap<String, Outer. @TC Inner>();
    90         l = new @TB HashMap<String, @TB Outer. Inner>();
    91         l = new @TB HashMap<String, @TB Outer. @TC Inner>();
    92         l = new @TB HashMap<String, @TA Top. Outer. @TC Inner>();
    93         l = new @TB HashMap<String, @TA Top. @TB Outer. Inner>();
    94         l = new @TB HashMap<String, @TA Top. @TB Outer. @TC Inner>();
    95     }
    96 }

mercurial