1/**
2 * @test /nodynamiccopyright/
3 * @bug 8022765
4 * @summary javac should not crash for incorrect attribute values
5 * @modules jdk.compiler/com.sun.tools.javac.api
6 *          jdk.compiler/com.sun.tools.javac.file
7 * @build VerifyAnnotationsAttributed
8 * @run main VerifyAnnotationsAttributed T8022765.java
9 * @compile/fail/ref=T8022765.out -XDrawDiagnostics T8022765.java
10 */
11@Ann(@Override)
12@Primitive(@Override)
13@Str(@Override)
14@En(@Override)
15@ArrAnn(@Override)
16@ArrPrimitive(@Override)
17@ArrStr(@Override)
18@ArrEn(@Override)
19class AnnC { }
20
21class PrimitiveC {
22    private static final int C = 1;
23    @Ann(C)
24    @Primitive(C)
25    @Str(C)
26    @En(C)
27    @ArrAnn(C)
28    @ArrPrimitive(C)
29    @ArrStr(C)
30    @ArrEn(C)
31    class I {
32    }
33}
34
35class StringC {
36
37    private static final String C = "";
38
39    @Ann(C)
40    @Primitive(C)
41    @Str(C)
42    @En(C)
43    @ArrAnn(C)
44    @ArrPrimitive(C)
45    @ArrStr(C)
46    @ArrEn(C)
47    class I {
48    }
49}
50
51@Ann(E.A)
52@Primitive(E.A)
53@Str(E.A)
54@En(E.A)
55@ArrAnn(E.A)
56@ArrPrimitive(E.A)
57@ArrStr(E.A)
58@ArrEn(E.A)
59class EnC { }
60
61@Ann({@Override})
62@Primitive({@Override})
63@Str({@Override})
64@En({@Override})
65@ArrAnn({@Override})
66@ArrPrimitive({@Override})
67@ArrStr({@Override})
68@ArrEn({@Override})
69class ArrAnnC { }
70
71class ArrPrimitiveC {
72    private static final int C = 1;
73    @Ann({C})
74    @Primitive({C})
75    @Str({C})
76    @En({C})
77    @ArrAnn({C})
78    @ArrPrimitive({C})
79    @ArrStr({C})
80    @ArrEn({C})
81    class I {
82    }
83}
84
85class ArrStringC {
86    private static final String C = "";
87    @Ann({C})
88    @Primitive({C})
89    @Str({C})
90    @En({C})
91    @ArrAnn({C})
92    @ArrPrimitive({C})
93    @ArrStr({C})
94    @ArrEn({C})
95    class I {
96    }
97}
98
99@Ann({E.A})
100@Primitive({E.A})
101@Str({E.A})
102@En({E.A})
103@ArrAnn({E.A})
104@ArrPrimitive({E.A})
105@ArrStr({E.A})
106@ArrEn({E.A})
107class ArrEnC { }
108
109@interface Ann {
110    Override value();
111}
112
113@interface Primitive {
114    int value();
115}
116
117@interface Str {
118    String value();
119}
120
121@interface En {
122    E value();
123}
124
125@interface ArrAnn {
126    Override[] value();
127}
128
129@interface ArrPrimitive {
130    int[] value();
131}
132
133@interface ArrStr {
134    String[] value();
135}
136
137@interface ArrEn {
138    E[] value();
139}
140
141enum E {
142    A;
143}
144