Lines 1269-1279
Link Here
|
1269 |
" public class X <T extends M> extends Super {}\n" + |
1269 |
" public class X <T extends M> extends Super {}\n" + |
1270 |
" ^\n" + |
1270 |
" ^\n" + |
1271 |
"M cannot be resolved to a type\n" + |
1271 |
"M cannot be resolved to a type\n" + |
1272 |
"----------\n" + |
|
|
1273 |
"2. WARNING in X.java (at line 3)\n" + |
1274 |
" class Y <T extends Y.M> extends Super {}\n" + |
1275 |
" ^^^\n" + |
1276 |
"Y.M is a raw type. References to generic type Super.M should be parameterized\n" + |
1277 |
"----------\n"); |
1272 |
"----------\n"); |
1278 |
} |
1273 |
} |
1279 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=98504 |
1274 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=98504 |
Lines 41441-41444
Link Here
|
41441 |
"Type mismatch: cannot convert from Class<capture#2-of ? extends Object> to Exception\n" + |
41436 |
"Type mismatch: cannot convert from Class<capture#2-of ? extends Object> to Exception\n" + |
41442 |
"----------\n"); |
41437 |
"----------\n"); |
41443 |
} |
41438 |
} |
|
|
41439 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=235837 |
41440 |
public void test1341() { |
41441 |
this.runNegativeTest( |
41442 |
new String[] { |
41443 |
"X.java", // ================= |
41444 |
"import java.util.*;\n" + |
41445 |
"public class X {\n" + |
41446 |
" void bar() {\n" + |
41447 |
" Integer i = 0;\n" + |
41448 |
" Double d = 0.0;\n" + |
41449 |
" foo((Collection<Number>) Arrays.asList(i, d));\n" + |
41450 |
" }\n" + |
41451 |
" void foo(Collection<Number> c) {}\n" + |
41452 |
"}\n", // ================= |
41453 |
}, |
41454 |
"----------\n" + |
41455 |
"1. ERROR in X.java (at line 6)\n" + |
41456 |
" foo((Collection<Number>) Arrays.asList(i, d));\n" + |
41457 |
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
41458 |
"Cannot cast from List<Number&Comparable<?>> to Collection<Number>\n" + |
41459 |
"----------\n" + |
41460 |
"2. WARNING in X.java (at line 6)\n" + |
41461 |
" foo((Collection<Number>) Arrays.asList(i, d));\n" + |
41462 |
" ^^^^^^^^^^^^^^^^^^^\n" + |
41463 |
"Type safety : A generic array of Number&Comparable<?> is created for a varargs parameter\n" + |
41464 |
"----------\n"); |
41465 |
} |
41466 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=235921 - variation |
41467 |
public void test1342() throws Exception { |
41468 |
this.runConformTest( |
41469 |
new String[] { |
41470 |
"X.java", // ================= |
41471 |
"import java.util.*;\n" + |
41472 |
"interface Adapter<T> {\n" + |
41473 |
" interface Setter<V> {}\n" + |
41474 |
" public <V> Setter<V> makeSetter();\n" + |
41475 |
"}\n" + |
41476 |
"\n" + |
41477 |
"public class X<T> implements Adapter<T> {\n" + |
41478 |
" public <V> X.Setter<V> makeSetter() {\n" + |
41479 |
" return new X.Setter<V>() {};\n" + |
41480 |
" }\n" + |
41481 |
" void foo() {\n" + |
41482 |
" List<Adapter.Setter<T>> l = new ArrayList<X.Setter<T>>();\n" + |
41483 |
" }\n" + |
41484 |
"}\n", // ================= |
41485 |
}, |
41486 |
""); |
41487 |
// check X$1 |
41488 |
String expectedOutput = |
41489 |
"// Signature: Ljava/lang/Object;LAdapter$Setter<TV;>;\n" + |
41490 |
"class X$1 implements Adapter$Setter {\n"; |
41491 |
|
41492 |
File f = new File(OUTPUT_DIR + File.separator + "X$1.class"); |
41493 |
byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(f); |
41494 |
ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); |
41495 |
String result = disassembler.disassemble(classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); |
41496 |
int index = result.indexOf(expectedOutput); |
41497 |
if (index == -1 || expectedOutput.length() == 0) { |
41498 |
System.out.println(Util.displayString(result, 3)); |
41499 |
} |
41500 |
if (index == -1) { |
41501 |
assertEquals("Wrong contents", expectedOutput, result); |
41502 |
} |
41503 |
|
41504 |
// check X |
41505 |
expectedOutput = |
41506 |
" // Signature: <V:Ljava/lang/Object;>()LAdapter$Setter<TV;>;\n" + |
41507 |
" // Stack: 3, Locals: 1\n" + |
41508 |
" public Adapter.Setter makeSetter();\n"; |
41509 |
|
41510 |
f = new File(OUTPUT_DIR + File.separator + "X.class"); |
41511 |
classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(f); |
41512 |
disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); |
41513 |
result = disassembler.disassemble(classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); |
41514 |
index = result.indexOf(expectedOutput); |
41515 |
if (index == -1 || expectedOutput.length() == 0) { |
41516 |
System.out.println(Util.displayString(result, 3)); |
41517 |
} |
41518 |
if (index == -1) { |
41519 |
assertEquals("Wrong contents", expectedOutput, result); |
41520 |
} |
41521 |
} |
41522 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=235921 - variation |
41523 |
public void test1343() throws Exception { |
41524 |
this.runConformTest( |
41525 |
new String[] { |
41526 |
"X.java", // ================= |
41527 |
"import java.util.*;\n" + |
41528 |
"class Adapter<T> {\n" + |
41529 |
" class Setter<V> {}\n" + |
41530 |
" public <V> Setter<V> makeSetter() { return null; }\n" + |
41531 |
"}\n" + |
41532 |
"\n" + |
41533 |
"public class X<T> extends Adapter<T> {\n" + |
41534 |
" public <V> X<T>.Setter<V> makeSetter() {\n" + |
41535 |
" return new X<T>().new Setter<V>() {};\n" + |
41536 |
" }\n" + |
41537 |
" void foo() {\n" + |
41538 |
" List<Adapter<T>.Setter<T>> l = new ArrayList<X<T>.Setter<T>>();\n" + |
41539 |
" }\n" + |
41540 |
"}\n", // ================= |
41541 |
}, |
41542 |
""); |
41543 |
} |
41544 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=235921 - variation |
41545 |
public void test1344() throws Exception { |
41546 |
this.runConformTest( |
41547 |
new String[] { |
41548 |
"X.java", // ================= |
41549 |
"import java.util.*;\n" + |
41550 |
"class Adapter<T> {\n" + |
41551 |
" class Setter<V> {}\n" + |
41552 |
" public <V> Setter<V> makeSetter() { return null; }\n" + |
41553 |
"}\n" + |
41554 |
"\n" + |
41555 |
"public class X<T> extends Adapter {\n" + |
41556 |
" public <V> X.Setter makeSetter() {\n" + |
41557 |
" return new X().new Setter() {};\n" + |
41558 |
" }\n" + |
41559 |
" void foo() {\n" + |
41560 |
" List<Adapter.Setter> l = new ArrayList<X.Setter>();\n" + |
41561 |
" }\n" + |
41562 |
"}\n", // ================= |
41563 |
}, |
41564 |
""); |
41565 |
} |
41566 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=235921 - variation |
41567 |
public void test1345() throws Exception { |
41568 |
this.runNegativeTest( |
41569 |
new String[] { |
41570 |
"X.java", // ================= |
41571 |
"import java.util.*;\n" + |
41572 |
"class Adapter<T> {\n" + |
41573 |
" class Setter<V> {}\n" + |
41574 |
" public <V> Setter<V> makeSetter() { return null; }\n" + |
41575 |
"}\n" + |
41576 |
"\n" + |
41577 |
"public class X<T> extends Adapter {\n" + |
41578 |
" public <V> X.Setter makeSetter() {\n" + |
41579 |
" return (String) new X().new Setter() {};\n" + |
41580 |
" }\n" + |
41581 |
" void foo() {\n" + |
41582 |
" List<Adapter.Setter> l = new ArrayList<X.Setter>();\n" + |
41583 |
" }\n" + |
41584 |
"}\n", // ================= |
41585 |
}, |
41586 |
"----------\n" + |
41587 |
"1. WARNING in X.java (at line 7)\n" + |
41588 |
" public class X<T> extends Adapter {\n" + |
41589 |
" ^^^^^^^\n" + |
41590 |
"Adapter is a raw type. References to generic type Adapter<T> should be parameterized\n" + |
41591 |
"----------\n" + |
41592 |
"2. WARNING in X.java (at line 8)\n" + |
41593 |
" public <V> X.Setter makeSetter() {\n" + |
41594 |
" ^^^^^^^^\n" + |
41595 |
"Adapter.Setter is a raw type. References to generic type Adapter<T>.Setter<V> should be parameterized\n" + |
41596 |
"----------\n" + |
41597 |
"3. WARNING in X.java (at line 8)\n" + |
41598 |
" public <V> X.Setter makeSetter() {\n" + |
41599 |
" ^^^^^^^^^^^^\n" + |
41600 |
"The method makeSetter() of type X<T> should be tagged with @Override since it actually overrides a superclass method\n" + |
41601 |
"----------\n" + |
41602 |
"4. ERROR in X.java (at line 9)\n" + |
41603 |
" return (String) new X().new Setter() {};\n" + |
41604 |
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
41605 |
"Cannot cast from new Adapter.Setter(){} to String\n" + |
41606 |
"----------\n" + |
41607 |
"5. ERROR in X.java (at line 9)\n" + |
41608 |
" return (String) new X().new Setter() {};\n" + |
41609 |
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + |
41610 |
"Type mismatch: cannot convert from String to Adapter.Setter\n" + |
41611 |
"----------\n" + |
41612 |
"6. WARNING in X.java (at line 9)\n" + |
41613 |
" return (String) new X().new Setter() {};\n" + |
41614 |
" ^\n" + |
41615 |
"X is a raw type. References to generic type X<T> should be parameterized\n" + |
41616 |
"----------\n" + |
41617 |
"7. WARNING in X.java (at line 9)\n" + |
41618 |
" return (String) new X().new Setter() {};\n" + |
41619 |
" ^^^^^^\n" + |
41620 |
"Adapter.Setter is a raw type. References to generic type Adapter<T>.Setter<V> should be parameterized\n" + |
41621 |
"----------\n" + |
41622 |
"8. WARNING in X.java (at line 12)\n" + |
41623 |
" List<Adapter.Setter> l = new ArrayList<X.Setter>();\n" + |
41624 |
" ^^^^^^^^^^^^^^\n" + |
41625 |
"Adapter.Setter is a raw type. References to generic type Adapter<T>.Setter<V> should be parameterized\n" + |
41626 |
"----------\n" + |
41627 |
"9. WARNING in X.java (at line 12)\n" + |
41628 |
" List<Adapter.Setter> l = new ArrayList<X.Setter>();\n" + |
41629 |
" ^^^^^^^^\n" + |
41630 |
"Adapter.Setter is a raw type. References to generic type Adapter<T>.Setter<V> should be parameterized\n" + |
41631 |
"----------\n"); |
41632 |
} |
41633 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=235921 - variation |
41634 |
public void test1346() throws Exception { |
41635 |
this.runNegativeTest( |
41636 |
new String[] { |
41637 |
"X.java", // ================= |
41638 |
"import java.util.*;\n" + |
41639 |
"class Adapter<T> {\n" + |
41640 |
" class Setter<V> {}\n" + |
41641 |
"}\n" + |
41642 |
"\n" + |
41643 |
"public class X<T> extends Adapter {\n" + |
41644 |
" public <V> Adapter.Setter makeSetter() {\n" + |
41645 |
" return (X.Setter) \"a\";\n" + |
41646 |
" }\n" + |
41647 |
"}\n", // ================= |
41648 |
}, |
41649 |
"----------\n" + |
41650 |
"1. WARNING in X.java (at line 6)\n" + |
41651 |
" public class X<T> extends Adapter {\n" + |
41652 |
" ^^^^^^^\n" + |
41653 |
"Adapter is a raw type. References to generic type Adapter<T> should be parameterized\n" + |
41654 |
"----------\n" + |
41655 |
"2. WARNING in X.java (at line 7)\n" + |
41656 |
" public <V> Adapter.Setter makeSetter() {\n" + |
41657 |
" ^^^^^^^^^^^^^^\n" + |
41658 |
"Adapter.Setter is a raw type. References to generic type Adapter<T>.Setter<V> should be parameterized\n" + |
41659 |
"----------\n" + |
41660 |
"3. ERROR in X.java (at line 8)\n" + |
41661 |
" return (X.Setter) \"a\";\n" + |
41662 |
" ^^^^^^^^^^^^^^\n" + |
41663 |
"Cannot cast from String to Adapter.Setter\n" + |
41664 |
"----------\n"); |
41665 |
} |
41666 |
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=236220 |
41667 |
public void test1347() throws Exception { |
41668 |
this.runNegativeTest( |
41669 |
new String[] { |
41670 |
"DeprecatedType.java", // ================= |
41671 |
"class Base {\n" + |
41672 |
" class Member<U> {\n" + |
41673 |
" }\n" + |
41674 |
"}\n" + |
41675 |
"\n" + |
41676 |
"@Deprecated\n" + |
41677 |
"public class DeprecatedType<T> extends Base {\n" + |
41678 |
"}\n", |
41679 |
"X.java", // ================= |
41680 |
"public class X {\n" + |
41681 |
" DeprecatedType.Member m1; // DeprecatedType and Member are raw + indirect access to Member\n" + |
41682 |
" DeprecatedType.Member<String> m2; // DeprecatedType is raw + indirect access to Member\n" + |
41683 |
" Zork z;\n" + |
41684 |
"}\n", // ================= |
41685 |
}, |
41686 |
"----------\n" + |
41687 |
"1. WARNING in X.java (at line 2)\n" + |
41688 |
" DeprecatedType.Member m1; // DeprecatedType and Member are raw + indirect access to Member\n" + |
41689 |
" ^^^^^^^^^^^^^^^^^^^^^\n" + |
41690 |
"The type DeprecatedType<T> is deprecated\n" + |
41691 |
"----------\n" + |
41692 |
"2. WARNING in X.java (at line 2)\n" + |
41693 |
" DeprecatedType.Member m1; // DeprecatedType and Member are raw + indirect access to Member\n" + |
41694 |
" ^^^^^^^^^^^^^^^^^^^^^\n" + |
41695 |
"Base.Member is a raw type. References to generic type Base.Member<U> should be parameterized\n" + |
41696 |
"----------\n" + |
41697 |
"3. WARNING in X.java (at line 3)\n" + |
41698 |
" DeprecatedType.Member<String> m2; // DeprecatedType is raw + indirect access to Member\n" + |
41699 |
" ^^^^^^^^^^^^^^\n" + |
41700 |
"The type DeprecatedType is deprecated\n" + |
41701 |
"----------\n" + |
41702 |
"4. ERROR in X.java (at line 4)\n" + |
41703 |
" Zork z;\n" + |
41704 |
" ^^^^\n" + |
41705 |
"Zork cannot be resolved to a type\n" + |
41706 |
"----------\n"); |
41707 |
} |
41708 |
|
41444 |
} |
41709 |
} |