### 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> {}"
+ },
+ ""
+ );
+}
}