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

changeset 2134
b0c086cd4520
parent 0
959103a6100f
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/test/tools/javac/annotations/typeAnnotations/failures/CantAnnotateStaticClass3.java	Tue Oct 15 15:57:13 2013 -0700
     1.3 @@ -0,0 +1,207 @@
     1.4 +/*
     1.5 + * @test /nodynamiccopyright/
     1.6 + * @bug 8006733 8006775
     1.7 + * @summary Ensure behavior for nested types is correct.
     1.8 + * @author Werner Dietl
     1.9 + * @ignore
    1.10 + * @compile/fail/ref=CantAnnotateStaticClass3.out -XDrawDiagnostics CantAnnotateStaticClass3.java
    1.11 + */
    1.12 +
    1.13 +import java.util.List;
    1.14 +import java.util.ArrayList;
    1.15 +import java.util.HashMap;
    1.16 +import java.lang.annotation.*;
    1.17 +
    1.18 +class Top {
    1.19 +    @Target(ElementType.TYPE_USE)
    1.20 +    @interface TA {}
    1.21 +
    1.22 +    @Target(ElementType.TYPE_USE)
    1.23 +    @interface TB {}
    1.24 +
    1.25 +    @Target(ElementType.TYPE_USE)
    1.26 +    @interface TC {}
    1.27 +
    1.28 +    interface Outer {
    1.29 +        class Inner {
    1.30 +            // Object o1 = Top.this;
    1.31 +            // Object o2 = Outer.this;
    1.32 +            Object o3 = this;
    1.33 +        }
    1.34 +        static class SInner {
    1.35 +            // Object o1 = Top.this;
    1.36 +            // Object o2 = Outer.this;
    1.37 +            Object o3 = this;
    1.38 +        }
    1.39 +        interface IInner {
    1.40 +            // Object o1 = Top.this;
    1.41 +            // Object o2 = Outer.this;
    1.42 +            // Object o3 = this;
    1.43 +        }
    1.44 +    }
    1.45 +
    1.46 +
    1.47 +    @TB Outer f1;
    1.48 +    @TB Outer.Inner f1a; // err
    1.49 +    @TB Outer.SInner f2a; // err
    1.50 +    @TB Outer.IInner f3a; // err
    1.51 +
    1.52 +    Outer. @TC Inner f1b;
    1.53 +    Outer. @TC SInner f2b;
    1.54 +    Outer. @TC IInner f3b;
    1.55 +
    1.56 +    @TB Outer. @TC Inner f1c; // err
    1.57 +    @TB Outer. @TC SInner f2c; // err
    1.58 +    @TB Outer. @TC IInner f3c; // err
    1.59 +
    1.60 +    @TA Top. @TB Outer g1; // err
    1.61 +    @TA Top. @TB Outer.Inner g1a; // err
    1.62 +    @TA Top. @TB Outer.SInner g2a; // err
    1.63 +    @TA Top. @TB Outer.IInner g3a; // err
    1.64 +
    1.65 +    @TA Top. Outer. @TC Inner g1b; // err
    1.66 +    @TA Top. Outer. @TC SInner g2b; // err
    1.67 +    @TA Top. Outer. @TC IInner g3b; // err
    1.68 +
    1.69 +    @TA Top. @TB Outer. @TC Inner g1c; // err
    1.70 +    @TA Top. @TB Outer. @TC SInner g2c; // err
    1.71 +    @TA Top. @TB Outer. @TC IInner g3c; // err
    1.72 +
    1.73 +    @TB Outer f1r() { return null; }
    1.74 +
    1.75 +    @TB Outer.Inner f1ra() { return null; } // err
    1.76 +    @TB Outer.SInner f2ra() { return null; } // err
    1.77 +    @TB Outer.IInner f3ra() { return null; } // err
    1.78 +
    1.79 +    Outer. @TC Inner f1rb() { return null; }
    1.80 +    Outer. @TC SInner f2rb() { return null; }
    1.81 +    Outer. @TC IInner f3rb() { return null; }
    1.82 +
    1.83 +    @TB Outer. @TC Inner f1rc() { return null; } // err
    1.84 +    @TB Outer. @TC SInner f2rc() { return null; } // err
    1.85 +    @TB Outer. @TC IInner f3rc() { return null; } // err
    1.86 +
    1.87 +    void f1param(@TB Outer p,
    1.88 +            @TB Outer.Inner p1, // err
    1.89 +            Outer. @TC Inner p2,
    1.90 +            @TB Outer. @TC Inner p3) { } // err
    1.91 +    void f2param(@TB Outer p,
    1.92 +            @TB Outer.SInner p1, // err
    1.93 +            Outer. @TC SInner p2,
    1.94 +            @TB Outer. @TC SInner p3) { } // err
    1.95 +    void f3param(@TB Outer p,
    1.96 +            @TB Outer.IInner p1, // err
    1.97 +            Outer. @TC IInner p2,
    1.98 +            @TB Outer. @TC IInner p3) { } // err
    1.99 +
   1.100 +    void f1cast(Object o) {
   1.101 +        Object l;
   1.102 +        l = (@TB Outer) o;
   1.103 +        l = (@TB Outer.Inner) o; // err
   1.104 +        l = (Outer. @TC Inner) o;
   1.105 +        l = (@TB Outer. @TC Inner) o; // err
   1.106 +    }
   1.107 +    void f2cast(Object o) {
   1.108 +        Object l;
   1.109 +        l = (@TB Outer) o;
   1.110 +        l = (@TB Outer.SInner) o; // err
   1.111 +        l = (Outer. @TC SInner) o;
   1.112 +        l = (@TB Outer. @TC SInner) o; // err
   1.113 +    }
   1.114 +    void f3cast(Object o) {
   1.115 +        Object l;
   1.116 +        l = (@TB Outer) o;
   1.117 +        l = (@TB Outer.IInner) o; // err
   1.118 +        l = (Outer. @TC IInner) o;
   1.119 +        l = (@TB Outer. @TC IInner) o; // err
   1.120 +    }
   1.121 +
   1.122 +    List<@TB Outer> h1;
   1.123 +
   1.124 +    List<@TB Outer.Inner> h1a; // err
   1.125 +    List<@TB Outer.SInner> h2a; // err
   1.126 +    List<@TB Outer.IInner> h3a; // err
   1.127 +
   1.128 +    List<Outer. @TC Inner> h1b;
   1.129 +    List<Outer. @TC SInner> h2b;
   1.130 +    List<Outer. @TC IInner> h3b;
   1.131 +
   1.132 +    List<@TB Outer. @TC Inner> h1c; // err
   1.133 +    List<@TB Outer. @TC SInner> h2c; // err
   1.134 +    List<@TB Outer. @TC IInner> h3c; // err
   1.135 +
   1.136 +    List<@TA Top. @TB Outer> k1; // err
   1.137 +
   1.138 +    List<@TA Top. @TB Outer.Inner> k1a; // err
   1.139 +    List<@TA Top. @TB Outer.SInner> k2a; // err
   1.140 +    List<@TA Top. @TB Outer.IInner> k3a; // err
   1.141 +
   1.142 +    List<@TA Top. Outer. @TC Inner> k1b; // err
   1.143 +    List<@TA Top. Outer. @TC SInner> k2b; // err
   1.144 +    List<@TA Top. Outer. @TC IInner> k3b; // err
   1.145 +
   1.146 +    List<@TA Top. @TB Outer. @TC Inner> k1c; // err
   1.147 +    List<@TA Top. @TB Outer. @TC SInner> k2c; // err
   1.148 +    List<@TA Top. @TB Outer. @TC IInner> k3c; // err
   1.149 +
   1.150 +
   1.151 +    List<@TB Outer> g1r() { return null; }
   1.152 +
   1.153 +    List<@TB Outer.Inner> g1ra() { return null; } // err
   1.154 +    List<@TB Outer.SInner> g2ra() { return null; } // err
   1.155 +    List<@TB Outer.IInner> g3ra() { return null; } // err
   1.156 +
   1.157 +    List<Outer. @TC Inner> g1rb() { return null; }
   1.158 +    List<Outer. @TC SInner> g2rb() { return null; }
   1.159 +    List<Outer. @TC IInner> g3rb() { return null; }
   1.160 +
   1.161 +    List<@TB Outer. @TC Inner> g1rc() { return null; } // err
   1.162 +    List<@TB Outer. @TC SInner> g2rc() { return null; } // err
   1.163 +    List<@TB Outer. @TC IInner> g3rc() { return null; } // err
   1.164 +
   1.165 +    void g1param(List<@TB Outer> p,
   1.166 +            List<@TB Outer.Inner> p1, // err
   1.167 +            List<Outer. @TC Inner> p2,
   1.168 +            List<@TB Outer. @TC Inner> p3) { } // err
   1.169 +    void g2param(List<@TB Outer> p,
   1.170 +            List<@TB Outer.SInner> p1, // err
   1.171 +            List<Outer. @TC SInner> p2,
   1.172 +            List<@TB Outer. @TC SInner> p3) { } // err
   1.173 +    void g3param(List<@TB Outer> p,
   1.174 +            List<@TB Outer.IInner> p1, // err
   1.175 +            List<Outer. @TC IInner> p2,
   1.176 +            List<@TB Outer. @TC IInner> p3) { } // err
   1.177 +
   1.178 +    void g1new(Object o) {
   1.179 +        Object l;
   1.180 +        l = new @TB ArrayList<@TB Outer>();
   1.181 +        l = new @TB ArrayList<@TB Outer.Inner>(); // err
   1.182 +        l = new @TB HashMap<String, Outer. @TC Inner>();
   1.183 +        l = new @TB HashMap<String, @TB Outer. Inner>(); // err
   1.184 +        l = new @TB HashMap<String, @TB Outer. @TC Inner>(); // err
   1.185 +    }
   1.186 +    void g2new(Object o) {
   1.187 +        Object l;
   1.188 +        l = new @TB ArrayList<@TB Outer>();
   1.189 +        l = new @TB ArrayList<@TB Outer.SInner>(); // err
   1.190 +        l = new @TB HashMap<String, Outer. @TC SInner>();
   1.191 +        l = new @TB HashMap<String, @TB Outer. SInner>(); // err
   1.192 +        l = new @TB HashMap<String, @TB Outer. @TC SInner>(); // err
   1.193 +    }
   1.194 +    void g3new(Object o) {
   1.195 +        Object l;
   1.196 +        l = new @TB ArrayList<@TB Outer>();
   1.197 +        l = new @TB ArrayList<@TB Outer.IInner>(); // err
   1.198 +        l = new @TB HashMap<String, Outer. @TC IInner>();
   1.199 +        l = new @TB HashMap<String, @TB Outer. IInner>(); // err
   1.200 +        l = new @TB HashMap<String, @TB Outer. @TC IInner>(); // err
   1.201 +    }
   1.202 +    void g4new(Object o) {
   1.203 +        Object l;
   1.204 +        l = new @TB ArrayList<@TA Top. @TB Outer>(); // err
   1.205 +        l = new @TB ArrayList<@TA Top. @TB Outer.IInner>(); // err
   1.206 +        l = new @TB HashMap<String, @TA Top. Outer. @TC IInner>(); // err
   1.207 +        l = new @TB HashMap<String, @TA Top. @TB Outer. IInner>(); // err
   1.208 +        l = new @TB HashMap<String, @TA Top. @TB Outer. @TC IInner>(); // err
   1.209 +    }
   1.210 +}

mercurial