test/tools/javac/annotations/typeAnnotations/failures/CantAnnotateStaticClass.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 CantAnnotateStaticClass.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 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 }
34
35 // All combinations are OK
36
37 Top.@TB Outer f1;
38 @TB Outer.Inner f1a;
39 Outer. @TC Inner f1b;
40 @TB Outer. @TC Inner f1c;
41
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;
46
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; }
51
52 void f1param(@TB Outer p,
53 @TB Outer.Inner p1,
54 Outer. @TC Inner p2,
55 @TB Outer. @TC Inner p3) { }
56
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 }
64
65 List<@TB Outer> g1;
66 List<@TB Outer.Inner> g1a;
67 List<Outer. @TC Inner> g1b;
68 List<@TB Outer. @TC Inner> g1c;
69
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;
74
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; }
79
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) { }
84
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