test/tools/javac/annotations/typeAnnotations/referenceinfos/FromSpecification.java

changeset 0
959103a6100f
child 2525
2eb010b6cb22
equal deleted inserted replaced
-1:000000000000 0:959103a6100f
1 /*
2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 import static com.sun.tools.classfile.TypeAnnotation.TargetType.*;
25
26 /*
27 * @test
28 * @summary Test that the examples from the manual are stored as expected
29 * @compile -g Driver.java ReferenceInfoUtil.java FromSpecification.java
30 * @run main Driver FromSpecification
31 */
32 public class FromSpecification {
33
34 @TADescriptions({
35 @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, paramIndex = 0),
36 @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
37 genericLocation = {3, 0}, paramIndex = 0),
38 @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER,
39 genericLocation = {3, 0, 2, 0}, paramIndex = 0),
40 @TADescription(annotation = "TD", type = METHOD_FORMAL_PARAMETER,
41 genericLocation = {3, 1}, paramIndex = 0),
42 @TADescription(annotation = "TE", type = METHOD_FORMAL_PARAMETER,
43 genericLocation = {3, 1, 3, 0}, paramIndex = 0)
44 })
45 public String testSpec1() {
46 return "void test(@TA Map<@TB ? extends @TC String, @TD List<@TE Object>> a) { }";
47 }
48
49 @TADescriptions({
50 @TADescription(annotation = "TF", type = METHOD_FORMAL_PARAMETER, paramIndex = 0),
51 @TADescription(annotation = "TG", type = METHOD_FORMAL_PARAMETER,
52 genericLocation = {0, 0}, paramIndex = 0),
53 @TADescription(annotation = "TH", type = METHOD_FORMAL_PARAMETER,
54 genericLocation = {0, 0, 0, 0}, paramIndex = 0),
55 @TADescription(annotation = "TI", type = METHOD_FORMAL_PARAMETER,
56 genericLocation = {0, 0, 0, 0, 0, 0}, paramIndex = 0)
57 })
58 public String testSpec2() {
59 return "void test(@TI String @TF [] @TG [] @TH [] a) { }";
60 }
61
62 // Note first "1, 0" for top-level class Test.
63 @TADescriptions({
64 @TADescription(annotation = "TJ", type = METHOD_FORMAL_PARAMETER,
65 genericLocation = {1, 0, 1, 0, 1, 0, 1, 0}, paramIndex = 0),
66 @TADescription(annotation = "TK", type = METHOD_FORMAL_PARAMETER,
67 genericLocation = {1, 0, 1, 0, 1, 0}, paramIndex = 0),
68 @TADescription(annotation = "TL", type = METHOD_FORMAL_PARAMETER,
69 genericLocation = {1, 0, 1, 0}, paramIndex = 0),
70 @TADescription(annotation = "TM", type = METHOD_FORMAL_PARAMETER,
71 genericLocation = {1, 0}, paramIndex = 0)
72 })
73 public String testSpec3() {
74 return "class Test { class O1 { class O2 { class O3 { class NestedStatic {} } } }" +
75 "void test(@TM O1.@TL O2.@TK O3.@TJ NestedStatic a) { } }";
76 }
77
78 @TADescriptions({
79 @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, paramIndex = 0),
80 @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
81 genericLocation = {3, 0}, paramIndex = 0),
82 @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER,
83 genericLocation = {3, 0, 3, 0}, paramIndex = 0),
84 @TADescription(annotation = "TD", type = METHOD_FORMAL_PARAMETER,
85 genericLocation = {3, 0, 3, 0, 0, 0}, paramIndex = 0),
86 @TADescription(annotation = "TE", type = METHOD_FORMAL_PARAMETER,
87 genericLocation = {3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0),
88 @TADescription(annotation = "TF", type = METHOD_FORMAL_PARAMETER,
89 genericLocation = {3, 0, 3, 0, 0, 0, 0, 0, 0, 0}, paramIndex = 0),
90 @TADescription(annotation = "TG", type = METHOD_FORMAL_PARAMETER,
91 genericLocation = {3, 1}, paramIndex = 0),
92 @TADescription(annotation = "TH", type = METHOD_FORMAL_PARAMETER,
93 genericLocation = {3, 1, 3, 0}, paramIndex = 0)
94 })
95 public String testSpec4() {
96 return "void test(@TA Map<@TB Comparable<@TF Object @TC [] @TD [] @TE []>, @TG List<@TH String>> a) { }";
97 }
98
99 // Note first "1, 0" for top-level class Test.
100 @TADescriptions({
101 @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
102 genericLocation = {1, 0, 1, 0, 1, 0, 1, 0}, paramIndex = 0),
103 @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
104 genericLocation = {1, 0, 1, 0, 1, 0, 1, 0, 3, 0}, paramIndex = 0),
105 @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER,
106 genericLocation = {1, 0, 1, 0, 1, 0, 1, 0, 3, 1}, paramIndex = 0),
107 @TADescription(annotation = "TD", type = METHOD_FORMAL_PARAMETER,
108 genericLocation = {1, 0, 1, 0, 1, 0}, paramIndex = 0),
109 @TADescription(annotation = "TE", type = METHOD_FORMAL_PARAMETER,
110 genericLocation = {1, 0, 1, 0}, paramIndex = 0),
111 @TADescription(annotation = "TF", type = METHOD_FORMAL_PARAMETER,
112 genericLocation = {1, 0, 1, 0, 3, 0}, paramIndex = 0),
113 @TADescription(annotation = "TG", type = METHOD_FORMAL_PARAMETER,
114 genericLocation = {1, 0, 1, 0, 3, 1}, paramIndex = 0),
115 @TADescription(annotation = "TH", type = METHOD_FORMAL_PARAMETER,
116 genericLocation = {1, 0}, paramIndex = 0)
117 })
118 public String testSpec5() {
119 return "class Test { class O1 { class O2<A, B> { class O3 { class Nested<X, Y> {} } } }" +
120 "void test(@TH O1.@TE O2<@TF String, @TG String>.@TD O3.@TA Nested<@TB String, @TC String> a) { } }";
121 }
122 }

mercurial