diff options
author | Stephan Herrmann | 2019-01-04 23:11:14 +0000 |
---|---|---|
committer | Stephan Herrmann | 2019-01-04 23:11:14 +0000 |
commit | 3f31ee4e0b35312b9d87bfa74bd6ce26e48cebf8 (patch) | |
tree | cee410f495b10b560579e7d963eb0c9bc825e802 | |
parent | dfbaf2bbac066417ca0fca78eb27006720dad7f5 (diff) | |
download | eclipse.jdt.core-3f31ee4e0b35312b9d87bfa74bd6ce26e48cebf8.tar.gz eclipse.jdt.core-3f31ee4e0b35312b9d87bfa74bd6ce26e48cebf8.tar.xz eclipse.jdt.core-3f31ee4e0b35312b9d87bfa74bd6ce26e48cebf8.zip |
Bug 543128 - Generic wildcard compiler bug
Change-Id: I1d688a2cf0b8aa86379486c3d5f7df9829665970
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; |