Index: compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java,v retrieving revision 1.69 diff -u -r1.69 MethodVerifier15.java --- compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java 6 Mar 2007 02:38:51 -0000 1.69 +++ compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java 7 Mar 2007 17:17:01 -0000 @@ -31,12 +31,22 @@ int length = oneArgs.length; if (length != twoArgs.length) return false; + boolean checkAllArgTypesAreConverted = true; for (int i = 0; i < length; i++) { if (!areTypesEqual(oneArgs[i], twoArgs[i])) { // methods with raw parameters are considered equal to inherited methods with parameterized parameters for backwards compatibility - if (!one.declaringClass.isInterface() && oneArgs[i].leafComponentType().isRawType()) - if (oneArgs[i].dimensions() == twoArgs[i].dimensions() && oneArgs[i].leafComponentType().isEquivalentTo(twoArgs[i].leafComponentType())) + if (!one.declaringClass.isInterface() && oneArgs[i].leafComponentType().isRawType()) { + if (oneArgs[i].dimensions() == twoArgs[i].dimensions() && oneArgs[i].leafComponentType().isEquivalentTo(twoArgs[i].leafComponentType())) { + if (checkAllArgTypesAreConverted) { + // check that all parameter types are RAW types, if one has been converted to parameterized, then all types must be converted + for (int j = 0; j < length; j++) + if (oneArgs[j].leafComponentType().isParameterizedType()) + return false; + checkAllArgTypesAreConverted = false; + } continue; + } + } return false; } }