Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2019-01-04 23:11:14 +0000
committerStephan Herrmann2019-01-04 23:11:14 +0000
commit3f31ee4e0b35312b9d87bfa74bd6ce26e48cebf8 (patch)
treecee410f495b10b560579e7d963eb0c9bc825e802
parentdfbaf2bbac066417ca0fca78eb27006720dad7f5 (diff)
downloadeclipse.jdt.core-3f31ee4e0b35312b9d87bfa74bd6ce26e48cebf8.tar.gz
eclipse.jdt.core-3f31ee4e0b35312b9d87bfa74bd6ce26e48cebf8.tar.xz
eclipse.jdt.core-3f31ee4e0b35312b9d87bfa74bd6ce26e48cebf8.zip
Bug 543128 - Generic wildcard compiler bug
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java17
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java2
2 files changed, 18 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
index 120b628ff5..8e40010f9d 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
@@ -9455,4 +9455,21 @@ public void testBug508834_comment0() {
};
runner.runConformTest();
}
+ public void testBug543128() {
+ Runner runner = new Runner();
+ runner.testFiles = new String[] {
+ "Bug543128.java",
+ "public class Bug543128 {\n" +
+ " static class A {}\n" +
+ " static class B<F, S extends A> extends A {}\n" +
+ " static class C<G extends A> {}\n" +
+ " \n" +
+ " public static <H extends A, T> void test(C<? super B<? super T, ? super H>> test)\n" +
+ " {\n" +
+ " test(test); // fails compilation (incorrect)\n" +
+ " }\n" +
+ "}\n"
+ };
+ runner.runConformTest();
+ }
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java
index 63cfb33a63..830ca76692 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java
@@ -335,7 +335,7 @@ class ConstraintTypeFormula extends ConstraintFormula {
}
if (superCandidate instanceof CaptureBinding) {
CaptureBinding capture = (CaptureBinding) superCandidate;
- if (capture.lowerBound != null && (capture.firstBound == null || capture.firstBound.id == TypeIds.T_JavaLangObject))
+ if (capture.lowerBound != null)
return ConstraintTypeFormula.create(subCandidate, capture.lowerBound, SUBTYPE, this.isSoft);
}
return FALSE;

Back to the top