### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java,v retrieving revision 1.87 diff -u -r1.87 MethodVerifier.java --- compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java 7 May 2007 18:42:35 -0000 1.87 +++ compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java 5 Jun 2007 15:11:00 -0000 @@ -239,17 +239,17 @@ int[] overriddenInheritedMethods = length > 1 ? findOverriddenInheritedMethods(methods, length) : null; if (overriddenInheritedMethods != null) { // detected some overridden methods that can be ignored when checking return types + // but cannot ignore an overridden inherited method completely when it comes to checking for bridge methods int index = 0; MethodBinding[] closestMethods = new MethodBinding[length]; for (int i = 0; i < length; i++) if (overriddenInheritedMethods[i] == 0) closestMethods[index++] = methods[i]; - methods = closestMethods; - length = index; - } - - if (!checkInheritedReturnTypes(methods, length)) + if (!checkInheritedReturnTypes(closestMethods, index)) + return; + } else if (!checkInheritedReturnTypes(methods, length)) { return; + } MethodBinding concreteMethod = null; if (!type.isInterface()) { // ignore concrete methods for interfaces #P org.eclipse.jdt.core.tests.compiler Index: src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java,v retrieving revision 1.128 diff -u -r1.128 MethodVerifyTest.java --- src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java 21 May 2007 12:00:29 -0000 1.128 +++ src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java 5 Jun 2007 15:11:06 -0000 @@ -7808,4 +7808,27 @@ "" ); } +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=190748 +public void test143() { + this.runConformTest( + new String[] { + "X.java", + "public class X {\n" + + " public static void main(String[] s) { ((IBase) new Impl()).get(); }\n" + + "}\n" + + "class Impl extends AImpl implements IBase, IEnhanced {}\n" + + "interface IBase {\n" + + " IBaseReturn get();\n" + + "}\n" + + "interface IEnhanced extends IBase {\n" + + " IEnhancedReturn get();\n" + + "}\n" + + "abstract class AImpl {\n" + + " public IEnhancedReturn get() { return null; }\n" + + "}\n" + + "interface IBaseReturn {}\n" + + "interface IEnhancedReturn extends IBaseReturn {}" + }, + ""); +} }