|
Lines 28-34
Link Here
|
| 28 |
public static Test suite() { |
28 |
public static Test suite() { |
| 29 |
return buildMinimalComplianceTestSuite(testClass(), F_1_7); |
29 |
return buildMinimalComplianceTestSuite(testClass(), F_1_7); |
| 30 |
} |
30 |
} |
| 31 |
public void _test001() { |
31 |
public void test001() { |
| 32 |
this.runConformTest( |
32 |
this.runConformTest( |
| 33 |
new String[] { |
33 |
new String[] { |
| 34 |
"X.java", |
34 |
"X.java", |
|
Lines 44-50
Link Here
|
| 44 |
}, |
44 |
}, |
| 45 |
"SUCCESS"); |
45 |
"SUCCESS"); |
| 46 |
} |
46 |
} |
| 47 |
public void _test001a() { |
47 |
public void test001a() { |
| 48 |
this.runNegativeTest( |
48 |
this.runNegativeTest( |
| 49 |
new String[] { |
49 |
new String[] { |
| 50 |
"X.java", |
50 |
"X.java", |
|
Lines 65-71
Link Here
|
| 65 |
"The method testFunction(String) in the type X<String> is not applicable for the arguments (int)\n" + |
65 |
"The method testFunction(String) in the type X<String> is not applicable for the arguments (int)\n" + |
| 66 |
"----------\n"); |
66 |
"----------\n"); |
| 67 |
} |
67 |
} |
| 68 |
public void _test001b() { |
68 |
public void test001b() { |
| 69 |
this.runConformTest( |
69 |
this.runConformTest( |
| 70 |
new String[] { |
70 |
new String[] { |
| 71 |
"X.java", |
71 |
"X.java", |
|
Lines 80-86
Link Here
|
| 80 |
"SUCCESS"); |
80 |
"SUCCESS"); |
| 81 |
} |
81 |
} |
| 82 |
// fields |
82 |
// fields |
| 83 |
public void _test001b_1() { |
83 |
public void test001b_1() { |
| 84 |
this.runConformTest( |
84 |
this.runConformTest( |
| 85 |
new String[] { |
85 |
new String[] { |
| 86 |
"X.java", |
86 |
"X.java", |
|
Lines 94-100
Link Here
|
| 94 |
}, |
94 |
}, |
| 95 |
"SUCCESS"); |
95 |
"SUCCESS"); |
| 96 |
} |
96 |
} |
| 97 |
public void _test001c() { |
97 |
public void test001c() { |
| 98 |
this.runNegativeTest( |
98 |
this.runNegativeTest( |
| 99 |
new String[] { |
99 |
new String[] { |
| 100 |
"X.java", |
100 |
"X.java", |
|
Lines 114-120
Link Here
|
| 114 |
"----------\n"); |
114 |
"----------\n"); |
| 115 |
} |
115 |
} |
| 116 |
// fields |
116 |
// fields |
| 117 |
public void _test001c_1() { |
117 |
public void test001c_1() { |
| 118 |
this.runNegativeTest( |
118 |
this.runNegativeTest( |
| 119 |
new String[] { |
119 |
new String[] { |
| 120 |
"X.java", |
120 |
"X.java", |
|
Lines 133-139
Link Here
|
| 133 |
"The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (int)\n" + |
133 |
"The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (int)\n" + |
| 134 |
"----------\n"); |
134 |
"----------\n"); |
| 135 |
} |
135 |
} |
| 136 |
public void _test001d() { |
136 |
public void test001d() { |
| 137 |
this.runNegativeTest( |
137 |
this.runNegativeTest( |
| 138 |
new String[] { |
138 |
new String[] { |
| 139 |
"X.java", |
139 |
"X.java", |
|
Lines 155-161
Link Here
|
| 155 |
"The method ab(ArrayList<String>) in the type X<String> is not applicable for the arguments (ArrayList<Object>)\n" + |
155 |
"The method ab(ArrayList<String>) in the type X<String> is not applicable for the arguments (ArrayList<Object>)\n" + |
| 156 |
"----------\n"); |
156 |
"----------\n"); |
| 157 |
} |
157 |
} |
| 158 |
public void _test001e() { |
158 |
public void test001e() { |
| 159 |
this.runNegativeTest( |
159 |
this.runNegativeTest( |
| 160 |
new String[] { |
160 |
new String[] { |
| 161 |
"X.java", |
161 |
"X.java", |
|
Lines 177-184
Link Here
|
| 177 |
"The method ab(ArrayList<String>) in the type X<String> is not applicable for the arguments (ArrayList<Object>)\n" + |
177 |
"The method ab(ArrayList<String>) in the type X<String> is not applicable for the arguments (ArrayList<Object>)\n" + |
| 178 |
"----------\n"); |
178 |
"----------\n"); |
| 179 |
} |
179 |
} |
| 180 |
public void _test001f() { |
180 |
public void test001f() { |
| 181 |
this.runConformTest( |
181 |
this.runNegativeTest( |
| 182 |
new String[] { |
182 |
new String[] { |
| 183 |
"X.java", |
183 |
"X.java", |
| 184 |
"public class X<T> {\n" + |
184 |
"public class X<T> {\n" + |
|
Lines 193-199
Link Here
|
| 193 |
" }\n" + |
193 |
" }\n" + |
| 194 |
"}", |
194 |
"}", |
| 195 |
}, |
195 |
}, |
| 196 |
"SUCCESS"); |
196 |
"----------\n" + |
|
|
197 |
"1. WARNING in X.java (at line 2)\n" + |
| 198 |
" class X2<T>{\n" + |
| 199 |
" ^\n" + |
| 200 |
"The type parameter T is hiding the type T\n" + |
| 201 |
"----------\n" + |
| 202 |
"2. ERROR in X.java (at line 8)\n" + |
| 203 |
" X<String>.X2<String> x = new X<>().new X2<>();\n" + |
| 204 |
" ^^^^^^^^^^^^^^^^^^^^\n" + |
| 205 |
"Type mismatch: cannot convert from X<Object>.X2<String> to X<String>.X2<String>\n" + |
| 206 |
"----------\n"); |
| 197 |
} |
207 |
} |
| 198 |
// fields |
208 |
// fields |
| 199 |
public void test001f_1() { |
209 |
public void test001f_1() { |
|
Lines 216-223
Link Here
|
| 216 |
}, |
226 |
}, |
| 217 |
"SUCCESS"); |
227 |
"SUCCESS"); |
| 218 |
} |
228 |
} |
| 219 |
public void _test001g() { |
229 |
public void test001g() { |
| 220 |
this.runConformTest( |
230 |
this.runNegativeTest( |
| 221 |
new String[] { |
231 |
new String[] { |
| 222 |
"X.java", |
232 |
"X.java", |
| 223 |
"public class X<T> {\n" + |
233 |
"public class X<T> {\n" + |
|
Lines 233-239
Link Here
|
| 233 |
" }\n" + |
243 |
" }\n" + |
| 234 |
"}", |
244 |
"}", |
| 235 |
}, |
245 |
}, |
| 236 |
"SUCCESS\n1"); |
246 |
"----------\n" + |
|
|
247 |
"1. ERROR in X.java (at line 9)\n" + |
| 248 |
" X<String>.X2<Integer> x = new X<>().new X2<>();\n" + |
| 249 |
" ^^^^^^^^^^^^^^^^^^^^\n" + |
| 250 |
"Type mismatch: cannot convert from X<Object>.X2<Integer> to X<String>.X2<Integer>\n" + |
| 251 |
"----------\n"); |
| 237 |
} |
252 |
} |
| 238 |
public void test001g_1() { |
253 |
public void test001g_1() { |
| 239 |
this.runConformTest( |
254 |
this.runConformTest( |
|
Lines 256-262
Link Here
|
| 256 |
}, |
271 |
}, |
| 257 |
"SUCCESS\n1"); |
272 |
"SUCCESS\n1"); |
| 258 |
} |
273 |
} |
| 259 |
public void _test001h() { |
274 |
public void test001h() { |
| 260 |
this.runNegativeTest( |
275 |
this.runNegativeTest( |
| 261 |
new String[] { |
276 |
new String[] { |
| 262 |
"X.java", |
277 |
"X.java", |
|
Lines 278-290
Link Here
|
| 278 |
" ^\n" + |
293 |
" ^\n" + |
| 279 |
"The type parameter T is hiding the type T\n" + |
294 |
"The type parameter T is hiding the type T\n" + |
| 280 |
"----------\n" + |
295 |
"----------\n" + |
| 281 |
"2. ERROR in X.java (at line 9)\n" + |
296 |
"2. ERROR in X.java (at line 8)\n" + |
|
|
297 |
" X<String>.X2<String> x = new X<>().new X2<>();\n" + |
| 298 |
" ^^^^^^^^^^^^^^^^^^^^\n" + |
| 299 |
"Type mismatch: cannot convert from X<Object>.X2<String> to X<String>.X2<String>\n" + |
| 300 |
"----------\n" + |
| 301 |
"3. ERROR in X.java (at line 9)\n" + |
| 282 |
" x.methodx(1);\n" + |
302 |
" x.methodx(1);\n" + |
| 283 |
" ^^^^^^^\n" + |
303 |
" ^^^^^^^\n" + |
| 284 |
"The method methodx(String) in the type X<String>.X2<String> is not applicable for the arguments (int)\n" + |
304 |
"The method methodx(String) in the type X<String>.X2<String> is not applicable for the arguments (int)\n" + |
| 285 |
"----------\n"); |
305 |
"----------\n"); |
| 286 |
} |
306 |
} |
| 287 |
public void _test001h_1() { |
307 |
public void test001h_1() { |
| 288 |
this.runNegativeTest( |
308 |
this.runNegativeTest( |
| 289 |
new String[] { |
309 |
new String[] { |
| 290 |
"X.java", |
310 |
"X.java", |
|
Lines 329-339
Link Here
|
| 329 |
"Type safety: The method methodx(Object) belongs to the raw type X.X2. References to generic type X<T>.X2<T> should be parameterized\n" + |
349 |
"Type safety: The method methodx(Object) belongs to the raw type X.X2. References to generic type X<T>.X2<T> should be parameterized\n" + |
| 330 |
"----------\n"); |
350 |
"----------\n"); |
| 331 |
} |
351 |
} |
| 332 |
public void _test001i() { |
352 |
public void test001h_2() { |
| 333 |
this.runConformTest( |
353 |
this.runConformTest( |
| 334 |
new String[] { |
354 |
new String[] { |
| 335 |
"X.java", |
355 |
"X.java", |
| 336 |
"public class X<T> {\n" + |
356 |
"public class X<T> {\n" + |
|
|
357 |
" class X2<T>{\n" + |
| 358 |
" void methodx(T param){\n" + |
| 359 |
" System.out.println(param);\n" + |
| 360 |
" }\n" + |
| 361 |
" }\n" + |
| 362 |
" X<String>.X2<String> x;\n" + |
| 363 |
" public static void main(String[] args) {\n" + |
| 364 |
" X test = new X();\n" + |
| 365 |
" test.x = new X<>().new X2<>();\n" + |
| 366 |
" test.x.methodx(1);\n" + |
| 367 |
" }\n" + |
| 368 |
"}", |
| 369 |
}, |
| 370 |
"1"); |
| 371 |
} |
| 372 |
public void test001i() { |
| 373 |
this.runNegativeTest( |
| 374 |
new String[] { |
| 375 |
"X.java", |
| 376 |
"public class X<T> {\n" + |
| 337 |
" class X2<K>{\n" + |
377 |
" class X2<K>{\n" + |
| 338 |
" class X22<I>{\n" + |
378 |
" class X22<I>{\n" + |
| 339 |
" void methodx(T param, K param2, I param3){\n" + |
379 |
" void methodx(T param, K param2, I param3){\n" + |
|
Lines 348-354
Link Here
|
| 348 |
" }\n" + |
388 |
" }\n" + |
| 349 |
"}", |
389 |
"}", |
| 350 |
}, |
390 |
}, |
| 351 |
"SUCCESS"); |
391 |
"----------\n" + |
|
|
392 |
"1. ERROR in X.java (at line 10)\n" + |
| 393 |
" X<String> test = new X<>(); X<String>.X2<Integer>.X22<X<String>> x = new X<>().new X2<>().new X22<>();\n" + |
| 394 |
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
| 395 |
"Type mismatch: cannot convert from X<Object>.X2<Object>.X22<X<String>> to X<String>.X2<Integer>.X22<X<String>>\n" + |
| 396 |
"----------\n"); |
| 352 |
} |
397 |
} |
| 353 |
public void test002() { |
398 |
public void test002() { |
| 354 |
this.runNegativeTest( |
399 |
this.runNegativeTest( |
|
Lines 376-382
Link Here
|
| 376 |
"Type safety: The method testFunction(Object) belongs to the raw type X. References to generic type X<T> should be parameterized\n" + |
421 |
"Type safety: The method testFunction(Object) belongs to the raw type X. References to generic type X<T> should be parameterized\n" + |
| 377 |
"----------\n"); |
422 |
"----------\n"); |
| 378 |
} |
423 |
} |
| 379 |
public void _test003() { |
424 |
public void test003() { |
| 380 |
this.runConformTest( |
425 |
this.runConformTest( |
| 381 |
new String[] { |
426 |
new String[] { |
| 382 |
"X.java", |
427 |
"X.java", |
|
Lines 392-398
Link Here
|
| 392 |
"SUCCESS"); |
437 |
"SUCCESS"); |
| 393 |
} |
438 |
} |
| 394 |
|
439 |
|
| 395 |
public void _test004b() { |
440 |
public void test004b() { |
| 396 |
this.runNegativeTest( |
441 |
this.runNegativeTest( |
| 397 |
new String[] { |
442 |
new String[] { |
| 398 |
"X.java", |
443 |
"X.java", |
|
Lines 437-443
Link Here
|
| 437 |
"1"); |
482 |
"1"); |
| 438 |
} |
483 |
} |
| 439 |
|
484 |
|
| 440 |
public void _test006() { |
485 |
public void test006() { |
| 441 |
this.runConformTest( |
486 |
this.runConformTest( |
| 442 |
new String[] { |
487 |
new String[] { |
| 443 |
"X.java", |
488 |
"X.java", |
|
Lines 460-466
Link Here
|
| 460 |
"SUCCESS"); |
505 |
"SUCCESS"); |
| 461 |
} |
506 |
} |
| 462 |
// shows the difference between using <> and the raw type - different semantics |
507 |
// shows the difference between using <> and the raw type - different semantics |
| 463 |
public void _test007() { |
508 |
public void test007() { |
| 464 |
this.runConformTest( |
509 |
this.runConformTest( |
| 465 |
new String[] { |
510 |
new String[] { |
| 466 |
"X.java", |
511 |
"X.java", |
|
Lines 487-493
Link Here
|
| 487 |
"1\n" + |
532 |
"1\n" + |
| 488 |
"2"); |
533 |
"2"); |
| 489 |
} |
534 |
} |
| 490 |
public void _test007a() { |
535 |
public void test007a() { |
| 491 |
this.runNegativeTest( |
536 |
this.runNegativeTest( |
| 492 |
new String[] { |
537 |
new String[] { |
| 493 |
"X.java", |
538 |
"X.java", |
|
Lines 529-540
Link Here
|
| 529 |
"----------\n"); |
574 |
"----------\n"); |
| 530 |
} |
575 |
} |
| 531 |
//shows the difference between using <> and the raw type - different semantics |
576 |
//shows the difference between using <> and the raw type - different semantics |
| 532 |
public void _test008() { |
577 |
public void test008() { |
| 533 |
this.runConformTest( |
578 |
this.runNegativeTest( |
| 534 |
new String[] { |
579 |
new String[] { |
| 535 |
"X.java", |
580 |
"X.java", |
| 536 |
"public class X<T> {\n" + |
581 |
"public class X<T> {\n" + |
| 537 |
" T field1;" + |
582 |
" T field1;\n" + |
| 538 |
" public X(T param){\n" + |
583 |
" public X(T param){\n" + |
| 539 |
" field1 = param;\n" + |
584 |
" field1 = param;\n" + |
| 540 |
" }\n" + |
585 |
" }\n" + |
|
Lines 547-556
Link Here
|
| 547 |
" }\n" + |
592 |
" }\n" + |
| 548 |
"}", |
593 |
"}", |
| 549 |
}, |
594 |
}, |
| 550 |
""); |
595 |
"----------\n" + |
|
|
596 |
"1. WARNING in X.java (at line 7)\n" + |
| 597 |
" X<?> x1 = new X(1).get(\"\");\n" + |
| 598 |
" ^^^^^^^^\n" + |
| 599 |
"Type safety: The constructor X(Object) belongs to the raw type X. References to generic type X<T> should be parameterized\n" + |
| 600 |
"----------\n" + |
| 601 |
"2. WARNING in X.java (at line 7)\n" + |
| 602 |
" X<?> x1 = new X(1).get(\"\");\n" + |
| 603 |
" ^^^^^^^^^^^^^^^^\n" + |
| 604 |
"Type safety: The method get(Object) belongs to the raw type X. References to generic type X<T> should be parameterized\n" + |
| 605 |
"----------\n" + |
| 606 |
"3. WARNING in X.java (at line 7)\n" + |
| 607 |
" X<?> x1 = new X(1).get(\"\");\n" + |
| 608 |
" ^\n" + |
| 609 |
"X is a raw type. References to generic type X<T> should be parameterized\n" + |
| 610 |
"----------\n" + |
| 611 |
"4. ERROR in X.java (at line 8)\n" + |
| 612 |
" X<?> x2 = new X<>(1).get(\"\");\n" + |
| 613 |
" ^^^\n" + |
| 614 |
"The method get(Integer) in the type X<Integer> is not applicable for the arguments (String)\n" + |
| 615 |
"----------\n"); |
| 551 |
} |
616 |
} |
| 552 |
|
617 |
|
| 553 |
public void _test0014() { |
618 |
public void test0014() { |
| 554 |
this.runConformTest( |
619 |
this.runConformTest( |
| 555 |
new String[] { |
620 |
new String[] { |
| 556 |
"X.java", |
621 |
"X.java", |
|
Lines 568-574
Link Here
|
| 568 |
"SUCCESS\n" + |
633 |
"SUCCESS\n" + |
| 569 |
"123"); |
634 |
"123"); |
| 570 |
} |
635 |
} |
| 571 |
public void _test0014a() { |
636 |
public void test0014a() { |
| 572 |
this.runNegativeTest( |
637 |
this.runNegativeTest( |
| 573 |
new String[] { |
638 |
new String[] { |
| 574 |
"X.java", |
639 |
"X.java", |
|
Lines 590-596
Link Here
|
| 590 |
"The method testFunction(String, Integer) in the type X<String,Integer> is not applicable for the arguments (int, String)\n" + |
655 |
"The method testFunction(String, Integer) in the type X<String,Integer> is not applicable for the arguments (int, String)\n" + |
| 591 |
"----------\n"); |
656 |
"----------\n"); |
| 592 |
} |
657 |
} |
| 593 |
public void _test0015() { |
658 |
public void test0015() { |
| 594 |
this.runConformTest( |
659 |
this.runConformTest( |
| 595 |
new String[] { |
660 |
new String[] { |
| 596 |
"X.java", |
661 |
"X.java", |
|
Lines 611-618
Link Here
|
| 611 |
} |
676 |
} |
| 612 |
// To verify that a parameterized invocation of a generic constructor works even if <> is used |
677 |
// To verify that a parameterized invocation of a generic constructor works even if <> is used |
| 613 |
// to elide class type parameters. |
678 |
// to elide class type parameters. |
| 614 |
public void _test0016() { |
679 |
public void test0016() { |
| 615 |
this.runConformTest( |
680 |
this.runConformTest( // javac fails to compile this, looks buggy |
| 616 |
new String[] { |
681 |
new String[] { |
| 617 |
"X.java", |
682 |
"X.java", |
| 618 |
"public class X<T> {\n" + |
683 |
"public class X<T> {\n" + |
|
Lines 632-639
Link Here
|
| 632 |
} |
697 |
} |
| 633 |
// To verify that a parameterized invocation of a generic constructor works even if <> is used |
698 |
// To verify that a parameterized invocation of a generic constructor works even if <> is used |
| 634 |
// to elide class type parameters. This test handles fields |
699 |
// to elide class type parameters. This test handles fields |
| 635 |
public void _test0016b() { |
700 |
public void test0016b() { |
| 636 |
this.runConformTest( |
701 |
this.runConformTest( // javac fails to compile this, looks buggy |
| 637 |
new String[] { |
702 |
new String[] { |
| 638 |
"X.java", |
703 |
"X.java", |
| 639 |
"public class X<T> {\n" + |
704 |
"public class X<T> {\n" + |
|
Lines 657-664
Link Here
|
| 657 |
// To verify that a parameterized invocation of a non-generic constructor works even if <> is used |
722 |
// To verify that a parameterized invocation of a non-generic constructor works even if <> is used |
| 658 |
// to elide class type parameters. |
723 |
// to elide class type parameters. |
| 659 |
// This was not allowed in java 1.6 and 1.5 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=168230) |
724 |
// This was not allowed in java 1.6 and 1.5 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=168230) |
| 660 |
public void _test0017() { |
725 |
public void test0017() { |
| 661 |
this.runConformTest( |
726 |
this.runConformTest( // javac fails to compile this, looks buggy |
| 662 |
new String[] { |
727 |
new String[] { |
| 663 |
"X.java", |
728 |
"X.java", |
| 664 |
"public class X<T> {\n" + |
729 |
"public class X<T> {\n" + |
|
Lines 679-685
Link Here
|
| 679 |
"const.1\nconst.1\nconst.2"); |
744 |
"const.1\nconst.1\nconst.2"); |
| 680 |
} |
745 |
} |
| 681 |
// To verify that the correct constructor is found by parameter substitution in the diamond case |
746 |
// To verify that the correct constructor is found by parameter substitution in the diamond case |
| 682 |
public void _test0018() { |
747 |
public void test0018() { |
| 683 |
this.runConformTest( |
748 |
this.runConformTest( |
| 684 |
new String[] { |
749 |
new String[] { |
| 685 |
"X.java", |
750 |
"X.java", |
|
Lines 700-706
Link Here
|
| 700 |
} |
765 |
} |
| 701 |
// To verify that the correct constructor is found by parameter substitution |
766 |
// To verify that the correct constructor is found by parameter substitution |
| 702 |
// in the diamond case -- fields |
767 |
// in the diamond case -- fields |
| 703 |
public void _test0018b() { |
768 |
public void test0018b() { |
| 704 |
this.runConformTest( |
769 |
this.runConformTest( |
| 705 |
new String[] { |
770 |
new String[] { |
| 706 |
"X.java", |
771 |
"X.java", |
|
Lines 738-744
Link Here
|
| 738 |
"----------\n"); |
803 |
"----------\n"); |
| 739 |
} |
804 |
} |
| 740 |
// check inference at method argument position. |
805 |
// check inference at method argument position. |
| 741 |
public void _test0020() { |
806 |
public void test0020() { |
| 742 |
this.runNegativeTest( |
807 |
this.runNegativeTest( |
| 743 |
new String[] { |
808 |
new String[] { |
| 744 |
"X.java", |
809 |
"X.java", |
|
Lines 757-763
Link Here
|
| 757 |
"----------\n"); |
822 |
"----------\n"); |
| 758 |
} |
823 |
} |
| 759 |
//check inference at method argument position. |
824 |
//check inference at method argument position. |
| 760 |
public void _test0021() { |
825 |
public void test0021() { |
| 761 |
this.runNegativeTest( |
826 |
this.runNegativeTest( |
| 762 |
new String[] { |
827 |
new String[] { |
| 763 |
"X.java", |
828 |
"X.java", |