### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java,v retrieving revision 1.118 diff -u -r1.118 CastExpression.java --- compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java 6 May 2008 11:07:25 -0000 1.118 +++ compiler/org/eclipse/jdt/internal/compiler/ast/CastExpression.java 27 May 2008 17:08:02 -0000 @@ -332,7 +332,7 @@ // easy case if less parameters on match TypeBinding[] castArguments = paramCastType.arguments; int length = castArguments.length; - if (length > paramMatch.arguments.length) { + if (paramMatch.arguments == null || length > paramMatch.arguments.length) { this.bits |= ASTNode.UnsafeCast; } else if ((paramCastType.tagBits & (TagBits.HasDirectWildcard|TagBits.HasTypeVariable)) != 0) { // verify alternate cast type, substituting different type arguments #P org.eclipse.jdt.core.tests.compiler Index: src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java,v retrieving revision 1.709 diff -u -r1.709 GenericTypeTest.java --- src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java 19 May 2008 12:54:17 -0000 1.709 +++ src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java 27 May 2008 17:08:13 -0000 @@ -44463,4 +44463,83 @@ }, ""); } +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=233800 +public void test1335() { + this.runNegativeTest( + new String[] { + "X.java", // ================= + "public class X {\n" + + " public void doesNotCompile(SomeInterface i) {\n" + + " T t = ((SomeDerivedInterface) i).getItem();\n" + + " }\n" + + " static interface SomeInterface {\n" + + " }\n" + + " static interface SomeDerivedInterface extends SomeInterface {\n" + + " T getItem();\n" + + " }\n" + + " Zork z;\n" + + "}\n", // ================= + }, + "----------\n" + + "1. WARNING in X.java (at line 3)\n" + + " T t = ((SomeDerivedInterface) i).getItem();\n" + + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + + "Type safety: Unchecked cast from X.SomeInterface to X.SomeDerivedInterface\n" + + "----------\n" + + "2. ERROR in X.java (at line 10)\n" + + " Zork z;\n" + + " ^^^^\n" + + "Zork cannot be resolved to a type\n" + + "----------\n"); +} +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=233800 - variation +public void test1336() { + this.runNegativeTest( + new String[] { + "X.java", // ================= + "public class X {\n" + + " void foo(Other2.Member2 om2) {\n" + + " Other.Member m = (Other.Member) om2;\n" + + " }\n" + + "}\n" + + "class Other {\n" + + " class Member {}\n" + + "}\n" + + "class Other2 extends Other {\n" + + " class Member2 extends Other.Member {\n" + + " }\n" + + "}\n", // ================= + }, + "----------\n" + + "1. ERROR in X.java (at line 3)\r\n" + + " Other.Member m = (Other.Member) om2;\r\n" + + " ^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + + "Cannot cast from Other2.Member2 to Other.Member\n" + + "----------\n"); +} +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=233800 - variation +public void test1337() { + this.runNegativeTest( + new String[] { + "X.java", // ================= + "public class X {\n" + + " void foo(Other2.Member2 om2) {\n" + + " Other.Member m = (Other.Member) om2;\n" + + " }\n" + + "}\n" + + "class Other {\n" + + " class Member {}\n" + + "}\n" + + "class Other2 extends Other {\n" + + " class Member2 extends Other.Member {\n" + + " }\n" + + "}\n", // ================= + }, + "----------\n" + + "1. ERROR in X.java (at line 3)\r\n" + + " Other.Member m = (Other.Member) om2;\r\n" + + " ^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + + "Cannot cast from Other2.Member2 to Other.Member\n" + + "----------\n"); +} } \ No newline at end of file