Fri, 22 Mar 2013 12:43:09 +0000
8010303: Graph inference: missing incorporation step causes spurious inference error
Summary: Multiple equality constraints on inference vars are not used to generate new inference constraints
Reviewed-by: jjg
1 /*
2 * Copyright (c) 2007, 2012, 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 */
24 import java.util.List;
26 public class TestClass1 {
27 // simple types
28 byte b;
29 short s;
30 int i;
31 long l;
32 float f;
33 double d;
34 Object o;
35 String t;
36 List<String> g;
38 // constants
39 static final byte bc = 0;
40 static final short sc = 0;
41 static final int ic = 0;
42 static final long lc = 0;
43 static final float fc = 0;
44 static final double dc = 0;
45 static final Object oc = null;
46 static final String tc = "";
47 static final List<String> gc = null;
49 // simple arrays
50 byte[] ba;
51 short[] sa; // not handled corrected by javah v6
52 int[] ia;
53 long[] la;
54 float[] fa;
55 double[] da;
56 Object[] oa;
57 String[] ta;
58 List<String>[] ga;
60 // multidimensional arrays
61 byte[][] baa;
62 short[][] saa;
63 int[][] iaa;
64 long[][] laa;
65 float[][] faa;
66 double[][] daa;
67 Object[][] oaa;
68 String[][] taa;
69 List<String>[] gaa;
71 // simple Java methods
72 byte bm() { return 0; }
73 short sm() { return 0; }
74 int im() { return 0; }
75 long lm() { return 0; }
76 float fm() { return 0; }
77 double dm() { return 0; }
78 Object om() { return null; }
79 String tm() { return ""; }
80 List<String> gm() { return null; }
81 void vm() { }
82 byte[] bam() { return null; }
83 short[] sam() { return null; }
84 int[] iam() { return null; }
85 long[] lam() { return null; }
86 float[] fam() { return null; }
87 double[] dam() { return null; }
88 Object[] oam() { return null; }
89 String[] tam() { return null; }
90 List<String>[] gam() { return null; }
91 byte[][] baam() { return null; }
92 short[][] saam() { return null; }
93 int[][] iaam() { return null; }
94 long[][] laam() { return null; }
95 float[][] faam() { return null; }
96 double[][] daam() { return null; }
97 Object[][] oaam() { return null; }
98 String[][] taam() { return null; }
99 List<String>[] gaam() { return null; }
101 // simple native methods
102 native byte bmn();
103 native short smn();
104 native int imn();
105 native long lmn();
106 native float fmn();
107 native double dmn();
108 native Object omn();
109 native String tmn();
110 native List<String> gmn();
111 native void vmn();
112 native byte[] bamn();
113 native short[] samn();
114 native int[] iamn();
115 native long[] lamn();
116 native float[] famn();
117 native double[] damn();
118 native Object[] oamn();
119 native String[] tamn();
120 native List<String>[] gamn();
121 native byte[][] baamn();
122 native short[][] saamn();
123 native int[][] iaamn();
124 native long[][] laamn();
125 native float[][] faamn();
126 native double[][] daamn();
127 native Object[][] oaamn();
128 native String[][] taamn();
129 native List<String>[] gaamn();
131 // overloaded Java methods
132 byte bm1() { return 0; }
133 short sm1() { return 0; }
134 int im1() { return 0; }
135 long lm1() { return 0; }
136 float fm1() { return 0; }
137 double dm1() { return 0; }
138 Object om1() { return null; }
139 String tm1() { return ""; }
140 List<String> gm1() { return null; }
141 void vm1() { }
143 byte bm2(int i) { return 0; }
144 short sm2(int i) { return 0; }
145 int im2(int i) { return 0; }
146 long lm2(int i) { return 0; }
147 float fm2(int i) { return 0; }
148 double dm2(int i) { return 0; }
149 Object om2(int i) { return null; }
150 String tm2(int i) { return ""; }
151 List<String> gm2(int i) { return null; }
152 void vm2(int i) { }
154 // overloaded native methods
155 native byte bmn1();
156 native short smn1();
157 native int imn1();
158 native long lmn1();
159 native float fmn1();
160 native double dmn1();
161 native Object omn1();
162 native String tmn1();
163 native List<String> gmn1();
164 native void vmn1();
166 native byte bmn2(int i);
167 native short smn2(int i);
168 native int imn2(int i);
169 native long lmn2(int i);
170 native float fmn2(int i);
171 native double dmn2(int i);
172 native Object omn2(int i);
173 native String tmn2(int i);
174 native List<String> gmn2(int i);
175 native void vmn2(int i);
177 // arg types for Java methods
178 void mb(byte b) { }
179 void ms(short s) { }
180 void mi(int i) { }
181 void ml(long l) { }
182 void mf(float f) { }
183 void md(double d) { }
184 void mo(Object o) { }
185 void mt(String t) { }
186 void mg(List<String> g) { }
188 // arg types for native methods
189 native void mbn(byte b);
190 native void msn(short s);
191 native void min(int i);
192 native void mln(long l);
193 native void mfn(float f);
194 native void mdn(double d);
195 native void mon(Object o);
196 native void mtn(String t);
197 native void mgn(List<String> g);
199 static class Inner1 {
200 // simple types
201 byte b;
202 short s;
203 int i;
204 long l;
205 float f;
206 double d;
207 Object o;
208 String t;
209 List<String> g;
211 // constants
212 static final byte bc = 0;
213 static final short sc = 0;
214 static final int ic = 0;
215 static final long lc = 0;
216 static final float fc = 0;
217 static final double dc = 0;
218 static final Object oc = null;
219 static final String tc = "";
220 static final List<String> gc = null;
222 // simple arrays
223 byte[] ba;
224 // short[] sa; // not handled corrected by javah v6
225 int[] ia;
226 long[] la;
227 float[] fa;
228 double[] da;
229 Object[] oa;
230 String[] ta;
231 List<String>[] ga;
233 // multidimensional arrays
234 byte[][] baa;
235 short[][] saa;
236 int[][] iaa;
237 long[][] laa;
238 float[][] faa;
239 double[][] daa;
240 Object[][] oaa;
241 String[][] taa;
242 List<String>[] gaa;
244 // simple Java methods
245 byte bm() { return 0; }
246 short sm() { return 0; }
247 int im() { return 0; }
248 long lm() { return 0; }
249 float fm() { return 0; }
250 double dm() { return 0; }
251 Object om() { return null; }
252 String tm() { return ""; }
253 List<String> gm() { return null; }
254 void vm() { }
256 // simple native methods
257 native byte bmn();
258 native short smn();
259 native int imn();
260 native long lmn();
261 native float fmn();
262 native double dmn();
263 native Object omn();
264 native String tmn();
265 native List<String> gmn();
266 native void vmn();
268 // overloaded Java methods
269 byte bm1() { return 0; }
270 short sm1() { return 0; }
271 int im1() { return 0; }
272 long lm1() { return 0; }
273 float fm1() { return 0; }
274 double dm1() { return 0; }
275 Object om1() { return null; }
276 String tm1() { return ""; }
277 List<String> gm1() { return null; }
278 void vm1() { }
280 byte bm2(int i) { return 0; }
281 short sm2(int i) { return 0; }
282 int im2(int i) { return 0; }
283 long lm2(int i) { return 0; }
284 float fm2(int i) { return 0; }
285 double dm2(int i) { return 0; }
286 Object om2(int i) { return null; }
287 String tm2(int i) { return ""; }
288 List<String> gm2(int i) { return null; }
289 void vm2(int i) { }
291 // overloaded native methods
292 native byte bmn1();
293 native short smn1();
294 native int imn1();
295 native long lmn1();
296 native float fmn1();
297 native double dmn1();
298 native Object omn1();
299 native String tmn1();
300 native List<String> gmn1();
301 native void vmn1();
303 native byte bmn2(int i);
304 native short smn2(int i);
305 native int imn2(int i);
306 native long lmn2(int i);
307 native float fmn2(int i);
308 native double dmn2(int i);
309 native Object omn2(int i);
310 native String tmn2(int i);
311 native List<String> gmn2(int i);
312 native void vmn2(int i);
314 // arg types for Java methods
315 void mb(byte b) { }
316 void ms(short s) { }
317 void mi(int i) { }
318 void ml(long l) { }
319 void mf(float f) { }
320 void md(double d) { }
321 void mo(Object o) { }
322 void mt(String t) { }
323 void mg(List<String> g) { }
325 // arg types for native methods
326 native void mbn(byte b);
327 native void msn(short s);
328 native void min(int i);
329 native void mln(long l);
330 native void mfn(float f);
331 native void mdn(double d);
332 native void mon(Object o);
333 native void mtn(String t);
334 native void mgn(List<String> g);
335 }
337 class Inner2 {
338 // simple types
339 byte b;
340 short s;
341 int i;
342 long l;
343 float f;
344 double d;
345 Object o;
346 String t;
347 List<String> g;
349 // constants
350 static final byte bc = 0;
351 static final short sc = 0;
352 static final int ic = 0;
353 static final long lc = 0;
354 static final float fc = 0;
355 static final double dc = 0;
356 //static final Object oc = null;
357 static final String tc = "";
358 //static final List<String> gc = null;
360 // simple arrays
361 byte[] ba;
362 // short[] sa; // not handled corrected by javah v6
363 int[] ia;
364 long[] la;
365 float[] fa;
366 double[] da;
367 Object[] oa;
368 String[] ta;
369 List<String>[] ga;
371 // multidimensional arrays
372 byte[][] baa;
373 short[][] saa;
374 int[][] iaa;
375 long[][] laa;
376 float[][] faa;
377 double[][] daa;
378 Object[][] oaa;
379 String[][] taa;
380 List<String>[] gaa;
382 // simple Java methods
383 byte bm() { return 0; }
384 short sm() { return 0; }
385 int im() { return 0; }
386 long lm() { return 0; }
387 float fm() { return 0; }
388 double dm() { return 0; }
389 Object om() { return null; }
390 String tm() { return ""; }
391 List<String> gm() { return null; }
392 void vm() { }
394 // simple native methods
395 native byte bmn();
396 native short smn();
397 native int imn();
398 native long lmn();
399 native float fmn();
400 native double dmn();
401 native Object omn();
402 native String tmn();
403 native List<String> gmn();
404 native void vmn();
406 // overloaded Java methods
407 byte bm1() { return 0; }
408 short sm1() { return 0; }
409 int im1() { return 0; }
410 long lm1() { return 0; }
411 float fm1() { return 0; }
412 double dm1() { return 0; }
413 Object om1() { return null; }
414 String tm1() { return ""; }
415 List<String> gm1() { return null; }
416 void vm1() { }
418 byte bm2(int i) { return 0; }
419 short sm2(int i) { return 0; }
420 int im2(int i) { return 0; }
421 long lm2(int i) { return 0; }
422 float fm2(int i) { return 0; }
423 double dm2(int i) { return 0; }
424 Object om2(int i) { return null; }
425 String tm2(int i) { return ""; }
426 List<String> gm2(int i) { return null; }
427 void vm2(int i) { }
429 // overloaded native methods
430 native byte bmn1();
431 native short smn1();
432 native int imn1();
433 native long lmn1();
434 native float fmn1();
435 native double dmn1();
436 native Object omn1();
437 native String tmn1();
438 native List<String> gmn1();
439 native void vmn1();
441 native byte bmn2(int i);
442 native short smn2(int i);
443 native int imn2(int i);
444 native long lmn2(int i);
445 native float fmn2(int i);
446 native double dmn2(int i);
447 native Object omn2(int i);
448 native String tmn2(int i);
449 native List<String> gmn2(int i);
450 native void vmn2(int i);
452 // arg types for Java methods
453 void mb(byte b) { }
454 void ms(short s) { }
455 void mi(int i) { }
456 void ml(long l) { }
457 void mf(float f) { }
458 void md(double d) { }
459 void mo(Object o) { }
460 void mt(String t) { }
461 void mg(List<String> g) { }
463 // arg types for native methods
464 native void mbn(byte b);
465 native void msn(short s);
466 native void min(int i);
467 native void mln(long l);
468 native void mfn(float f);
469 native void mdn(double d);
470 native void mon(Object o);
471 native void mtn(String t);
472 native void mgn(List<String> g);
473 }
475 }