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

changeset 0
959103a6100f
child 2525
2eb010b6cb22
equal deleted inserted replaced
-1:000000000000 0:959103a6100f
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 */
8
9 import java.util.List;
10 import java.util.ArrayList;
11 import java.util.HashMap;
12 import java.lang.annotation.*;
13
14 class Top {
15 @Target(ElementType.TYPE_USE)
16 @interface TA {}
17
18 @Target(ElementType.TYPE_USE)
19 @interface TB {}
20
21 @Target(ElementType.TYPE_USE)
22 @interface TC {}
23
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 }
41
42 @TB Outer f1;
43 @TB Outer.Inner f1a;
44 @TB Outer.SInner f2a; // err
45 @TB Outer.IInner f3a; // err
46
47 Outer. @TC Inner f1b;
48 Outer. @TC SInner f2b;
49 Outer. @TC IInner f3b;
50
51 @TB Outer. @TC Inner f1c;
52 @TB Outer. @TC SInner f2c; // err
53 @TB Outer. @TC IInner f3c; // err
54
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
59
60 @TA Top. Outer. @TC Inner g1b; // err
61 @TA Top. Outer. @TC SInner g2b; // err
62 @TA Top. Outer. @TC IInner g3b; // err
63
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
67
68 @TB Outer f1r() { return null; }
69
70 @TB Outer.Inner f1ra() { return null; }
71 @TB Outer.SInner f2ra() { return null; } // err
72 @TB Outer.IInner f3ra() { return null; } // err
73
74 Outer. @TC Inner f1rb() { return null; }
75 Outer. @TC SInner f2rb() { return null; }
76 Outer. @TC IInner f3rb() { return null; }
77
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
81
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
94
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 }
116
117 List<@TB Outer> h1;
118
119 List<@TB Outer.Inner> h1a;
120 List<@TB Outer.SInner> h2a; // err
121 List<@TB Outer.IInner> h3a; // err
122
123 List<Outer. @TC Inner> h1b;
124 List<Outer. @TC SInner> h2b;
125 List<Outer. @TC IInner> h3b;
126
127 List<@TB Outer. @TC Inner> h1c;
128 List<@TB Outer. @TC SInner> h2c; // err
129 List<@TB Outer. @TC IInner> h3c; // err
130
131 List<@TA Top. @TB Outer> k1; // err
132
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
136
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
140
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
144
145
146 List<@TB Outer> g1r() { return null; }
147
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
151
152 List<Outer. @TC Inner> g1rb() { return null; }
153 List<Outer. @TC SInner> g2rb() { return null; }
154 List<Outer. @TC IInner> g3rb() { return null; }
155
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
159
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
172
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