### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java,v retrieving revision 1.352 diff -u -r1.352 Scope.java --- compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java 25 Mar 2009 20:17:40 -0000 1.352 +++ compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java 27 Mar 2009 18:28:16 -0000 @@ -834,7 +834,7 @@ if (compatibleMethod != null) { if (compatibleMethod.isValidBinding()) { if (concreteMatch != null && concreteMatch.declaringClass.findSuperTypeOriginatingFrom(compatibleMethod.declaringClass) != null) - if (environment().methodVerifier().isParameterSubsignature(concreteMatch, compatibleMethod)) + if (environment().methodVerifier().isParameterSubsignature(concreteMatch.original(), compatibleMethod.original())) continue; // can skip this method since concreteMatch overrides it if (candidatesCount == 0) { candidates = new MethodBinding[foundSize - startFoundSize + 1]; #P org.eclipse.jdt.core.tests.compiler Index: src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java,v retrieving revision 1.63 diff -u -r1.63 AmbiguousMethodTest.java --- src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java 19 Mar 2009 14:20:30 -0000 1.63 +++ src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java 27 Mar 2009 18:28:18 -0000 @@ -3206,4 +3206,23 @@ "----------\n" ); } + +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=270194 +public void test077() { + this.runConformTest( + new String[] { + "X.java", + "abstract class X implements I {\n" + + " public , D extends J> A method(A arg) { return null; }\n" + + " void test(Y c) { method(c); }\n" + + "}\n" + + "interface I {\n" + + " , D extends J> A method(A arg);\n" + + "}\n" + + "interface J, D extends J> {}\n" + + "class Y implements J, Y> {}" + }, + "" + ); +} }