### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java,v retrieving revision 1.70 diff -u -r1.70 LookupEnvironment.java --- compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java 20 Apr 2006 07:29:03 -0000 1.70 +++ compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java 2 May 2006 11:32:26 -0000 @@ -408,6 +408,8 @@ originalType = type.leafComponentType(); break; default: + if (type.id == TypeIds.T_JavaLangObject) + return type; // Object is not generic dimension = 0; originalType = type; } @@ -440,11 +442,10 @@ } else { convertedEnclosing = convertToParameterizedType(originalEnclosing); } - ReferenceBinding originalGeneric = (ReferenceBinding) originalType.erasure(); if (needToConvert) { - convertedType = createRawType(originalGeneric, convertedEnclosing); + convertedType = createRawType((ReferenceBinding) originalType.erasure(), convertedEnclosing); } else if (originalEnclosing != convertedEnclosing) { - convertedType = createParameterizedType(originalGeneric, null, convertedEnclosing); + convertedType = createParameterizedType((ReferenceBinding) originalType.erasure(), null, convertedEnclosing); } else { convertedType = originalType; } @@ -470,6 +471,8 @@ originalType = type.leafComponentType(); break; default: + if (type.id == TypeIds.T_JavaLangObject) + return type; // Object is not generic dimension = 0; originalType = type; } @@ -494,12 +497,16 @@ convertedType = needToConvert ? createRawType((ReferenceBinding)originalType.erasure(), null) : originalType; } else { ReferenceBinding convertedEnclosing = (ReferenceBinding) convertUnresolvedBinaryToRawType(originalEnclosing); - ReferenceBinding originalGeneric = (ReferenceBinding) originalType.erasure(); - if (needToConvert || originalEnclosing != convertedEnclosing) { - convertedType = createRawType(originalGeneric, convertedEnclosing); + if (convertedEnclosing != originalEnclosing) { + needToConvert |= !((ReferenceBinding)originalType).isStatic(); + } + if (needToConvert) { + convertedType = createRawType((ReferenceBinding) originalType.erasure(), convertedEnclosing); + } else if (originalEnclosing != convertedEnclosing) { + convertedType = createParameterizedType((ReferenceBinding) originalType.erasure(), null, convertedEnclosing); } else { convertedType = originalType; - } + } } if (originalType != convertedType) { return dimension > 0 ? (TypeBinding)createArrayType(convertedType, dimension) : convertedType; #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.481 diff -u -r1.481 GenericTypeTest.java --- src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java 26 Apr 2006 22:49:22 -0000 1.481 +++ src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java 2 May 2006 11:32:43 -0000 @@ -30705,4 +30705,51 @@ "Bean cannot be resolved to a type\n" + "----------\n"); } +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=139525 +public void test0976() { + this.runConformTest( + new String[] { + "S.java", // ================= + "import java.util.Collection;\n" + + "public class S {\n" + + " public static void cow(IDA s) {\n" + + " Collection ids = s.getIds(); // Error here\n" + + " }\n" + + " public static void main(String[] args) {\n" + + " System.out.println(\"SUCCESS\");\n" + + " }\n" + + "}\n", // ================= + "ID.java", // ================= + "import java.util.Collection;\n" + + "public interface ID {\n" + + " Collection> getIds();\n" + + "}\n", // ================= + "IDA.java", // ================= + "import java.util.Collection;\n" + + "public interface IDA extends ID {\n" + + " enum Enum1 {\n" + + " ONE, TWO\n" + + " }\n" + + " Collection getIds();\n" + + "}\n", // ================= + }, + "SUCCESS"); + this.runConformTest( + new String[] { + "S.java", // ================= + "import java.util.Collection;\n" + + "public class S {\n" + + " public static void cow(IDA s) {\n" + + " Collection ids = s.getIds(); // Error here\n" + + " }\n" + + " public static void main(String[] args) {\n" + + " System.out.println(\"SUCCESS2\");\n" + + " }\n" + + "}\n", // ================= + }, + "SUCCESS2", + null, + false, + null); +} }