20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 |
23 |
24 import static com.sun.tools.classfile.TypeAnnotation.TargetType.*; |
24 import static com.sun.tools.classfile.TypeAnnotation.TargetType.*; |
|
25 import static java.lang.System.lineSeparator; |
25 |
26 |
26 /* |
27 /* |
27 * @test |
28 * @test |
|
29 * @bug 8042451 |
28 * @summary Test population of reference info for method type parameters |
30 * @summary Test population of reference info for method type parameters |
29 * @compile -g Driver.java ReferenceInfoUtil.java MethodTypeParam.java |
31 * @compile -g Driver.java ReferenceInfoUtil.java MethodTypeParam.java |
30 * @run main Driver MethodTypeParam |
32 * @run main Driver MethodTypeParam |
31 */ |
33 */ |
32 public class MethodTypeParam { |
34 public class MethodTypeParam { |
33 |
35 |
34 @TADescriptions({ |
36 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
35 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, paramIndex = 0), |
37 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
36 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0), |
38 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
37 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER, paramIndex = 1), |
39 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
38 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0), |
40 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
39 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
40 }) |
|
41 public String regularClass() { |
41 public String regularClass() { |
42 return "<@TA K extends @TB Date, @TC V extends @TD Object & @TE Cloneable> void test() { }"; |
42 return "<@TA K extends @TB Date, @TC V extends @TD Object & @TE Cloneable> void test() { }"; |
43 } |
43 } |
44 |
44 |
45 @TADescriptions({ |
45 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
46 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, paramIndex = 0), |
46 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
47 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0), |
47 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
48 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER, paramIndex = 1), |
48 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
49 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
50 }) |
|
51 public String regularClass2() { |
49 public String regularClass2() { |
52 return "<@TA K extends @TB Date, @TC V extends @TE Cloneable> void test() { }"; |
50 return "<@TA K extends @TB Date, @TC V extends @TE Cloneable> void test() { }"; |
53 } |
51 } |
54 |
52 |
55 @TADescriptions({ |
53 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
56 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1), |
54 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
57 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}), |
55 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
58 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1), |
56 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
59 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}), |
57 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}) |
60 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}), |
58 @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
61 @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
|
62 }) |
|
63 public String regularClassParameterized() { |
59 public String regularClassParameterized() { |
64 return "<K extends @TA Map<String, @TB String>, V extends @TF Object & @TC List<@TD List<@TE Object>>> void test() { }"; |
60 return "<K extends @TA Map<String, @TB String>, V extends @TF Object & @TC List<@TD List<@TE Object>>> void test() { }"; |
65 } |
61 } |
66 |
62 |
67 @TADescriptions({ |
63 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
68 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, paramIndex = 0), |
64 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
69 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0), |
65 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
70 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER, paramIndex = 1), |
66 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
71 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0), |
67 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
72 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
73 }) |
|
74 public String abstractClass() { |
68 public String abstractClass() { |
75 return "abstract class Test { abstract <@TA K extends @TB Date, @TC V extends @TD Object & @TE Cloneable> void test(); }"; |
69 return "abstract class %TEST_CLASS_NAME% { abstract <@TA K extends @TB Date, @TC V extends @TD Object & @TE Cloneable> void test(); }"; |
76 } |
70 } |
77 |
71 |
78 @TADescriptions({ |
72 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
79 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1), |
73 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
80 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}), |
74 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
81 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1), |
75 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
82 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}), |
76 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}) |
83 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}), |
77 @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
84 @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0), |
78 @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
85 @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
|
86 }) |
|
87 public String abstractClassParameterized() { |
79 public String abstractClassParameterized() { |
88 return "abstract class Test { abstract <K extends @TG Object & @TA Map<String, @TB String>, V extends @TF Object & @TC List<@TD List<@TE Object>>> void test(); }"; |
80 return "abstract class %TEST_CLASS_NAME% { abstract <K extends @TG Object & @TA Map<String, @TB String>, V extends @TF Object & @TC List<@TD List<@TE Object>>> void test(); }"; |
89 } |
81 } |
90 |
82 |
91 @TADescriptions({ |
83 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
92 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1), |
84 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
93 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}), |
85 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
94 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1), |
86 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
95 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}), |
87 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}) |
96 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}) |
|
97 }) |
|
98 public String abstractClassParameterized2() { |
88 public String abstractClassParameterized2() { |
99 return "abstract class Test { abstract <K extends @TA Map<String, @TB String>, V extends @TC List<@TD List<@TE Object>>> void test(); }"; |
89 return "abstract class %TEST_CLASS_NAME% { abstract <K extends @TA Map<String, @TB String>, V extends @TC List<@TD List<@TE Object>>> void test(); }"; |
100 } |
90 } |
101 |
91 |
102 @TADescriptions({ |
92 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
103 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1), |
93 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
104 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
105 }) |
|
106 public String abstractClassParameterized3() { |
94 public String abstractClassParameterized3() { |
107 return "abstract class Test { abstract <K extends @TA List<String>, V extends @TB List<Object>> void test(); }"; |
95 return "abstract class %TEST_CLASS_NAME% { abstract <K extends @TA List<String>, V extends @TB List<Object>> void test(); }"; |
108 } |
96 } |
109 |
97 |
110 @TADescriptions({ |
98 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
111 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, paramIndex = 0), |
99 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
112 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0), |
100 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
113 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER, paramIndex = 1), |
101 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
114 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0), |
102 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
115 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
116 }) |
|
117 public String regularInterface() { |
103 public String regularInterface() { |
118 return "interface Test { <@TA K extends @TB Date, @TC V extends @TD Object & @TE Cloneable> void test(); }"; |
104 return "interface %TEST_CLASS_NAME% { <@TA K extends @TB Date, @TC V extends @TD Object & @TE Cloneable> void test(); }"; |
119 } |
105 } |
120 |
106 |
121 @TADescriptions({ |
107 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
122 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1), |
108 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
123 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}), |
109 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
124 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1), |
110 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
125 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}), |
111 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}) |
126 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}), |
112 @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
127 @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0), |
113 @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
128 @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0), |
114 @TADescription(annotation = "TH", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
129 @TADescription(annotation = "TH", type = METHOD_TYPE_PARAMETER, paramIndex = 0), |
115 @TADescription(annotation = "TI", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
130 @TADescription(annotation = "TI", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
|
131 }) |
|
132 public String regularInterfaceParameterized() { |
116 public String regularInterfaceParameterized() { |
133 return "interface Test { <@TH K extends @TG Object & @TA Map<String, @TB String>, @TI V extends @TF Object & @TC List<@TD List<@TE Object>>> void test(); }"; |
117 return "interface %TEST_CLASS_NAME% { <@TH K extends @TG Object & @TA Map<String, @TB String>, @TI V extends @TF Object & @TC List<@TD List<@TE Object>>> void test(); }"; |
134 } |
118 } |
135 |
119 |
136 @TADescriptions({ |
120 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
137 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1), |
121 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
138 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}), |
122 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
139 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1), |
123 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
140 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}), |
124 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}) |
141 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}), |
125 @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
142 @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER, paramIndex = 0), |
126 @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
143 @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
|
144 }) |
|
145 public String regularInterfaceParameterized2() { |
127 public String regularInterfaceParameterized2() { |
146 return "interface Test { <@TF K extends @TA Map<String, @TB String>, @TG V extends @TC List<@TD List<@TE Object>>> void test(); }"; |
128 return "interface %TEST_CLASS_NAME% { <@TF K extends @TA Map<String, @TB String>, @TG V extends @TC List<@TD List<@TE Object>>> void test(); }"; |
147 } |
129 } |
148 |
130 |
149 @TADescription(annotation = "TA", type = METHOD_RETURN) |
131 @TADescription(annotation = "TA", type = METHOD_RETURN) |
150 public String useInReturn1() { |
132 public String useInReturn1() { |
151 return "class Test { <T> @TA T m() { throw new RuntimeException(); } }"; |
133 return "class %TEST_CLASS_NAME% { <T> @TA T m() { throw new RuntimeException(); } }"; |
152 } |
134 } |
153 |
135 |
154 @TADescription(annotation = "TA", type = METHOD_RETURN, genericLocation = {3, 0}) |
136 @TADescription(annotation = "TA", type = METHOD_RETURN, genericLocation = {3, 0}) |
155 public String useInReturn2() { |
137 public String useInReturn2() { |
156 return "class Test { <T> Class<@TA T> m() { throw new RuntimeException(); } }"; |
138 return "class %TEST_CLASS_NAME% { <T> Class<@TA T> m() { throw new RuntimeException(); } }"; |
157 } |
139 } |
158 |
140 |
159 @TADescriptions({ |
141 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
160 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0), |
142 @TADescription(annotation = "TB", type = METHOD_RETURN) |
161 @TADescription(annotation = "TB", type = METHOD_RETURN) |
143 public String useInReturn3() { |
162 }) |
144 return "class %TEST_CLASS_NAME% { <T extends @TA Object> @TB T m() { throw new RuntimeException(); } }"; |
163 public String useInReturn3() { |
|
164 return "class Test { <T extends @TA Object> @TB T m() { throw new RuntimeException(); } }"; |
|
165 } |
145 } |
166 |
146 |
167 @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, |
147 @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, |
168 paramIndex = 0, genericLocation = {3, 0}) |
148 paramIndex = 0, genericLocation = {3, 0}) |
169 public String useInParam1() { |
149 public String useInParam1() { |
170 return "class Test { <T> void m(Class<@TA T> p) { throw new RuntimeException(); } }"; |
150 return "class %TEST_CLASS_NAME% { <T> void m(Class<@TA T> p) { throw new RuntimeException(); } }"; |
171 } |
151 } |
172 |
152 |
173 @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, |
153 @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, |
174 paramIndex = 0, genericLocation = {3, 0}) |
154 paramIndex = 0, genericLocation = {3, 0}) |
175 public String useInParam2() { |
155 public String useInParam2() { |
176 return "class Test { void m(Class<@TA Object> p) { throw new RuntimeException(); } }"; |
156 return "class %TEST_CLASS_NAME% { void m(Class<@TA Object> p) { throw new RuntimeException(); } }"; |
177 } |
157 } |
178 |
158 |
179 @TADescriptions({ |
159 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
180 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1), |
160 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 2) |
181 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 2), |
161 @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER, paramIndex = 0) |
182 @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER, paramIndex = 0) |
|
183 }) |
|
184 public String useInParam3() { |
162 public String useInParam3() { |
185 return "interface IA {} " + |
163 return "interface IA {} " + |
186 "interface IB<XB> {} " + |
164 "interface IB<XB> {} " + |
187 "interface IC<XC> {} " + |
165 "interface IC<XC> {} " + |
188 "class Test { <T extends @TA IB<IA> & @TB IC<IA>> void m(@TC T p) { throw new RuntimeException(); } }"; |
166 "class %TEST_CLASS_NAME% { <T extends @TA IB<IA> & @TB IC<IA>> void m(@TC T p) { throw new RuntimeException(); } }"; |
189 } |
167 } |
190 |
168 |
191 @TADescriptions({ |
169 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, |
192 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, |
|
193 paramIndex = 0, boundIndex = 1, |
170 paramIndex = 0, boundIndex = 1, |
194 genericLocation = {}), |
171 genericLocation = {}) |
195 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, |
172 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, |
196 paramIndex = 0, boundIndex = 2, |
173 paramIndex = 0, boundIndex = 2, |
197 genericLocation = {}), |
174 genericLocation = {}) |
198 @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER, |
175 @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER, |
199 paramIndex = 0) |
176 paramIndex = 0) |
200 }) |
|
201 public String useInParam4() { |
177 public String useInParam4() { |
202 return "class Test {" + |
178 return "class %TEST_CLASS_NAME% {" + |
203 " interface IA {} " + |
179 " interface IA {} " + |
204 " interface IB<XB> {} " + |
180 " interface IB<XB> {} " + |
205 " interface IC<XC> {} " + |
181 " interface IC<XC> {} " + |
206 " <T extends @TA IB<IA> & @TB IC<IA>> void m(@TC T p) { throw new RuntimeException(); } }"; |
182 " <T extends @TA IB<IA> & @TB IC<IA>> void m(@TC T p) { throw new RuntimeException(); } }"; |
207 } |
183 } |
208 |
184 |
209 @TADescriptions({ |
185 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, |
210 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND, |
|
211 paramIndex = 0, boundIndex = 0, |
186 paramIndex = 0, boundIndex = 0, |
212 genericLocation = {}), |
187 genericLocation = {}) |
213 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, |
188 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, |
214 paramIndex = 0, boundIndex = 0, |
189 paramIndex = 0, boundIndex = 0, |
215 genericLocation = {1, 0}), |
190 genericLocation = {1, 0}) |
216 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, |
191 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, |
217 paramIndex = 0, boundIndex = 0, |
192 paramIndex = 0, boundIndex = 0, |
218 genericLocation = {1, 0, 3, 0}), |
193 genericLocation = {1, 0, 3, 0}) |
219 }) |
194 public String useInParam5() { |
220 public String useInParam5() { |
195 return "class %TEST_CLASS_NAME% {" + |
221 return "class Test {" + |
|
222 " interface IA {} " + |
196 " interface IA {} " + |
223 " class CB<XC> {} " + |
197 " class CB<XC> {} " + |
224 " <T extends @TA Test. @TB CB<@TC IA>> void m(T p) { throw new RuntimeException(); } }"; |
198 " <T extends @TA %TEST_CLASS_NAME%. @TB CB<@TC IA>> void m(T p) { throw new RuntimeException(); } }"; |
225 } |
199 } |
226 |
200 |
227 @TADescriptions({ |
201 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, |
228 @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER, |
202 paramIndex = 0) |
229 paramIndex = 0), |
203 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, |
230 @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND, |
|
231 paramIndex = 0, boundIndex = 0, |
204 paramIndex = 0, boundIndex = 0, |
232 genericLocation = {}), |
205 genericLocation = {}) |
233 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, |
206 @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND, |
234 paramIndex = 0, boundIndex = 0, |
207 paramIndex = 0, boundIndex = 0, |
235 genericLocation = {1, 0, 3, 0}), |
208 genericLocation = {1, 0, 3, 0}) |
236 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, |
209 @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND, |
237 paramIndex = 0, boundIndex = 1, |
210 paramIndex = 0, boundIndex = 1, |
238 genericLocation = {}), |
211 genericLocation = {}) |
239 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, |
212 @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND, |
240 paramIndex = 0, boundIndex = 1, |
213 paramIndex = 0, boundIndex = 1, |
241 genericLocation = {3, 0}) |
214 genericLocation = {3, 0}) |
242 }) |
|
243 public String useInParam6() { |
215 public String useInParam6() { |
244 return "class Test {" + |
216 return "class %TEST_CLASS_NAME% {" + |
245 " interface IA {} " + |
217 " interface IA {} " + |
246 " interface IB<XB> {} " + |
218 " interface IB<XB> {} " + |
247 " class CC<XC> {} " + |
219 " class CC<XC> {} " + |
248 " interface ID<XD> {} " + |
220 " interface ID<XD> {} " + |
249 " <@TA T extends @TB Test.CC<@TC IA> & Test. @TD ID<@TE IA>> void m(T p) { throw new RuntimeException(); } }"; |
221 " <@TA T extends @TB %TEST_CLASS_NAME%.CC<@TC IA> & %TEST_CLASS_NAME%. @TD ID<@TE IA>> void m(T p) { throw new RuntimeException(); } }"; |
|
222 } |
|
223 |
|
224 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
|
225 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
|
226 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
|
227 @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
|
228 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
229 public String regularClassRepeatableAnnotation() { |
|
230 return "<@RTA @RTA K extends @RTB @RTB Date, @RTC @RTC V extends @RTD @RTD Object & @RTE @RTE Cloneable> void test() { }"; |
|
231 } |
|
232 |
|
233 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
|
234 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
|
235 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
|
236 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
237 public String regularClassRepeatableAnnotation2() { |
|
238 return "<@RTA @RTA K extends @RTB @RTB Date, @RTC @RTC V extends @RTE @RTE Cloneable> void test() { }"; |
|
239 } |
|
240 |
|
241 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
|
242 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
|
243 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
244 @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
|
245 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}) |
|
246 @TADescription(annotation = "RTFs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
|
247 public String regularClassParameterizedRepeatableAnnotation() { |
|
248 return "<K extends @RTA @RTA Map<String, @RTB @RTB String>, V extends @RTF @RTF Object" + |
|
249 " & @RTC @RTC List<@RTD @RTD List<@RTE @RTE Object>>> void test() { }"; |
|
250 } |
|
251 |
|
252 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
|
253 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
|
254 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
|
255 @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
|
256 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
257 public String abstractClassRepeatableAnnotation() { |
|
258 return "abstract class %TEST_CLASS_NAME% { abstract <@RTA @RTA K extends @RTB @RTB Date," + |
|
259 " @RTC @RTC V extends @RTD @RTD Object & @RTE @RTE Cloneable> void test(); }"; |
|
260 } |
|
261 |
|
262 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
|
263 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
|
264 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
265 @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
|
266 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
|
267 @TADescription(annotation = "RTFs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
|
268 public String abstractClassParameterizedRepeatableAnnotation() { |
|
269 return "abstract class %TEST_CLASS_NAME% { abstract <K extends @RTE @RTE Object &" + |
|
270 " @RTA @RTA Map<String, @RTB @RTB String>, V extends @RTF @RTF Object &" + |
|
271 " @RTC @RTC List<@RTD @RTD Object>> void test(); }"; |
|
272 } |
|
273 |
|
274 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
|
275 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
|
276 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
277 @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
|
278 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0, 3, 0}) |
|
279 public String abstractClassParameterizedRepeatableAnnotation2() { |
|
280 return "abstract class %TEST_CLASS_NAME% { abstract <K extends @RTA @RTA Map<String, @RTB @RTB String>," + |
|
281 " V extends @RTC @RTC List<@RTD @RTD List<@RTE @RTE Object>>> void test(); }"; |
|
282 } |
|
283 |
|
284 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
|
285 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
286 public String abstractClassParameterizedRepeatableAnnotation3() { |
|
287 return "abstract class %TEST_CLASS_NAME% { abstract <K extends @RTA @RTA List<String>," + |
|
288 " V extends @RTB @RTB List<Object>> void test(); }"; |
|
289 } |
|
290 |
|
291 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
|
292 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
|
293 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
|
294 @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 0) |
|
295 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
296 public String regularInterfaceRepeatableAnnotation() { |
|
297 return "interface %TEST_CLASS_NAME% { <@RTA @RTA K extends @RTB @RTB Date," + |
|
298 " @RTC @RTC V extends @RTD @RTD Object & @RTE @RTE Cloneable> void test(); }"; |
|
299 } |
|
300 |
|
301 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
|
302 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1, genericLocation = {3, 1}) |
|
303 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1) |
|
304 @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 1, boundIndex = 1, genericLocation = {3, 0}) |
|
305 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER, paramIndex = 1) |
|
306 @TADescription(annotation = "RTFs", type = METHOD_TYPE_PARAMETER, paramIndex = 0) |
|
307 public String regularInterfaceParameterizedRepeatableAnnotation() { |
|
308 return "interface %TEST_CLASS_NAME% { <@RTF @RTF K extends @RTA @RTA Map<String, @RTB @RTB String>," + |
|
309 " @RTE @RTE V extends @RTC @RTC List<@RTD @RTD Object>> void test(); }"; |
|
310 } |
|
311 |
|
312 @TADescription(annotation = "RTAs", type = METHOD_RETURN) |
|
313 public String useInReturnRepeatableAnnotation1() { |
|
314 return "class %TEST_CLASS_NAME% { <T> @RTA @RTA T m() { throw new RuntimeException(); } }"; |
|
315 } |
|
316 |
|
317 @TADescription(annotation = "RTAs", type = METHOD_RETURN, genericLocation = {3, 0}) |
|
318 public String useInReturnRepeatableAnnotation2() { |
|
319 return "class %TEST_CLASS_NAME% { <T> Class<@RTA @RTA T> m() { throw new RuntimeException(); } }"; |
|
320 } |
|
321 |
|
322 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 0) |
|
323 @TADescription(annotation = "RTBs", type = METHOD_RETURN) |
|
324 public String useInReturnRepeatableAnnotation3() { |
|
325 return "class %TEST_CLASS_NAME% { <T extends @RTA @RTA Object> @RTB @RTB T m() { throw new RuntimeException(); } }"; |
|
326 } |
|
327 |
|
328 @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER, |
|
329 paramIndex = 0, genericLocation = {3, 0}) |
|
330 public String useInParamRepeatableAnnotation1() { |
|
331 return "class %TEST_CLASS_NAME% { <T> void m(Class<@RTA @RTA T> p) { throw new RuntimeException(); } }"; |
|
332 } |
|
333 |
|
334 @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER, |
|
335 paramIndex = 0, genericLocation = {3, 0}) |
|
336 public String useInParamRepeatableAnnotation2() { |
|
337 return "class %TEST_CLASS_NAME% { void m(Class<@RTA @RTA Object> p) { throw new RuntimeException(); } }"; |
|
338 } |
|
339 |
|
340 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 1) |
|
341 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, paramIndex = 0, boundIndex = 2) |
|
342 @TADescription(annotation = "RTCs", type = METHOD_FORMAL_PARAMETER, paramIndex = 0) |
|
343 public String useInParamRepeatableAnnotation3() { |
|
344 return "interface IA {} " + |
|
345 "interface IB<XB> {} " + |
|
346 "interface IC<XC> {} " + |
|
347 "class %TEST_CLASS_NAME% { <T extends @RTA @RTA IB<IA> & @RTB @RTB IC<IA>>" + |
|
348 " void m(@RTC @RTC T p) { throw new RuntimeException(); } }"; |
|
349 } |
|
350 |
|
351 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
352 paramIndex = 0, boundIndex = 1, |
|
353 genericLocation = {}) |
|
354 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
355 paramIndex = 0, boundIndex = 2, |
|
356 genericLocation = {}) |
|
357 @TADescription(annotation = "RTCs", type = METHOD_FORMAL_PARAMETER, |
|
358 paramIndex = 0) |
|
359 public String useInParamRepeatableAnnotation4() { |
|
360 return "class %TEST_CLASS_NAME% {" + |
|
361 " interface IA {} " + |
|
362 " interface IB<XB> {} " + |
|
363 " interface IC<XC> {} " + |
|
364 " <T extends @RTA @RTA IB<IA> & @RTB @RTB IC<IA>>" + |
|
365 " void m(@RTC @RTC T p) { throw new RuntimeException(); } }"; |
|
366 } |
|
367 |
|
368 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
369 paramIndex = 0, boundIndex = 0, |
|
370 genericLocation = {}) |
|
371 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
372 paramIndex = 0, boundIndex = 0, |
|
373 genericLocation = {1, 0}) |
|
374 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
375 paramIndex = 0, boundIndex = 0, |
|
376 genericLocation = {1, 0, 3, 0}) |
|
377 public String useInParamRepeatableAnnotation5() { |
|
378 return "class %TEST_CLASS_NAME% {" + |
|
379 " interface IA {} " + |
|
380 " class CB<XC> {} " + |
|
381 " <T extends @RTA @RTA %TEST_CLASS_NAME%. @RTB @RTB" + |
|
382 " CB<@RTC @RTC IA>> void m(T p) { throw new RuntimeException(); } }"; |
|
383 } |
|
384 |
|
385 @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER, |
|
386 paramIndex = 0) |
|
387 @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
388 paramIndex = 0, boundIndex = 0, |
|
389 genericLocation = {}) |
|
390 @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
391 paramIndex = 0, boundIndex = 0, |
|
392 genericLocation = {1, 0, 3, 0}) |
|
393 @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
394 paramIndex = 0, boundIndex = 1, |
|
395 genericLocation = {}) |
|
396 @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND, |
|
397 paramIndex = 0, boundIndex = 1, |
|
398 genericLocation = {3, 0}) |
|
399 public String useInParamRepeatableAnnotation6() { |
|
400 return "class %TEST_CLASS_NAME% {" + |
|
401 " interface IA {} " + |
|
402 " interface IB<XB> {} " + |
|
403 " class CC<XC> {} " + |
|
404 " interface ID<XD> {} " + |
|
405 " <@RTA @RTA T extends @RTB @RTB %TEST_CLASS_NAME%.CC<@RTC @RTC IA> &" + |
|
406 " %TEST_CLASS_NAME%. @RTD @RTD ID<@RTE @RTE IA>> void m(T p) { throw new RuntimeException(); } }"; |
250 } |
407 } |
251 } |
408 } |