Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorssankaran2014-02-07 04:20:37 +0000
committerssankaran2014-02-07 04:20:37 +0000
commitd2f1b4fec195182862080cd06483547e8cdf0d8e (patch)
treeba574a34d40ac514c75e4e83b90e5f4021fc71f6 /org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java
parent55d39504efb3d0b23ce8f4487f5528fe899ca35d (diff)
downloadeclipse.jdt.core-d2f1b4fec195182862080cd06483547e8cdf0d8e.tar.gz
eclipse.jdt.core-d2f1b4fec195182862080cd06483547e8cdf0d8e.tar.xz
eclipse.jdt.core-d2f1b4fec195182862080cd06483547e8cdf0d8e.zip
junit for Bug 426542 - [1.8] Most specific method not picked when one
method has intersection type as type parameter
Diffstat (limited to 'org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java')
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java
index 6800c9a73b..6ba7b0c9b0 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java
@@ -3999,5 +3999,48 @@ public void testBug427438c3() {
"The serializable class A does not declare a static final serialVersionUID field of type long\n" +
"----------\n");
}
+// https://bugs.eclipse.org/bugs/show_bug.cgi?id=426542, [1.8] Most specific method not picked when one method has intersection type as type parameter
+public void test426542() {
+ if (this.complianceLevel == ClassFileConstants.JDK1_8)
+ return;
+ runNegativeTest(
+ new String[] {
+ "X.java",
+ "import java.util.List;\n" +
+ "public class X {\n" +
+ "\n" +
+ " public static void main() {\n" +
+
+ " List<Object> list = null;\n" +
+ " Object o = null;\n" +
+
+ " genericMethod(list, genericClassTransformer(genericClassFactory(o)));\n" +
+
+ " genericMethod(list, genericClassFactory(o)); // works\n" +
+
+ " GenericClass<Iterable<? super Object>> tempVariable = genericClassTransformer(genericClassFactory(o));\n" +
+
+ " GenericClass<Iterable<? super Object>> tempVariable2 = genericClassFactory(o); // works\n" +
+
+ " }\n" +
+
+ " private static <T> void genericMethod(T param1, GenericClass<? super T> param2) {\n" +
+ " throw new UnsupportedOperationException();\n" +
+ " }\n" +
+
+ " public static <T> GenericClass<Iterable<? super T>> genericClassFactory(T item) {\n" +
+ " throw new UnsupportedOperationException();\n" +
+ " }\n" +
+
+ " public static <T> GenericClass<T> genericClassTransformer(GenericClass<T> matcher) {\n" +
+ " throw new UnsupportedOperationException();\n" +
+ " }\n" +
+
+ " private static class GenericClass<T> {\n" +
+ " }\n" +
+ "}\n"
+ },
+ "");
+}
}

Back to the top