Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2014-07-24 15:14:51 +0000
committerStephan Herrmann2014-08-07 12:19:42 +0000
commitf7d4d8dabde7105fd4248609c651dcea219330fe (patch)
tree783c1518528e5d2ce20aec554bca26f9d5cae6e6
parentb15d04e770c3684cb44e6d568034939418181370 (diff)
downloadeclipse.jdt.core-f7d4d8dabde7105fd4248609c651dcea219330fe.tar.gz
eclipse.jdt.core-f7d4d8dabde7105fd4248609c651dcea219330fe.tar.xz
eclipse.jdt.core-f7d4d8dabde7105fd4248609c651dcea219330fe.zip
Bug 437007 - [1.8][inference] Inferencing failing to work out type in
vararg method invocation
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java19
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java3
2 files changed, 21 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 77ec5877da..8859cc924d 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
@@ -3197,4 +3197,23 @@ public void testBug435462() {
"}"
});
}
+public void testBug437007() {
+ runConformTest(
+ new String[] {
+ "ExecutorTests.java",
+ "import java.util.*;\n" +
+ "\n" +
+ "public class ExecutorTests {\n" +
+ " List<Runnable> tasks = Arrays.asList(\n" +
+ " () -> {\n" +
+ " System.out.println(\"task1 start\");\n" +
+ " }\n" +
+ " );\n" +
+ "\n" +
+ " public void executeInSync(){\n" +
+ " tasks.stream().forEach(Runnable::run);\n" +
+ " }\n" +
+ "}\n"
+ });
+}
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java
index b28f02423e..c2d823060e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java
@@ -291,7 +291,8 @@ public class InferenceContext18 {
}
}
if (checkVararg && varArgsType instanceof ArrayBinding) {
- TypeBinding thetaF = substitute(((ArrayBinding) varArgsType).elementsType());
+ varArgsType = ((ArrayBinding)varArgsType).elementsType();
+ TypeBinding thetaF = substitute(varArgsType);
for (int i = len; i < this.invocationArguments.length; i++) {
if (this.invocationArguments[i].isPertinentToApplicability(varArgsType, method)) {
this.initialConstraints[numConstraints++] = new ConstraintExpressionFormula(this.invocationArguments[i], thetaF, ReductionResult.COMPATIBLE, ARGUMENT_CONSTRAINTS_ARE_SOFT);

Back to the top