From 9d09a4d1b4168713507df2edb99bc00a7e08466b Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Wed, 17 Dec 2014 15:34:57 +0300 Subject: [PATCH] Fixed message for TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH error --- .../resolve/calls/tasks/AbstractTracingStrategy.java | 3 ++- .../capturedTypes/expectedTypeMismatchWithInVariance.kt | 9 +++++++++ .../capturedTypes/expectedTypeMismatchWithInVariance.txt | 4 ++++ .../jet/checkers/JetDiagnosticsTestGenerated.java | 6 ++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.kt create mode 100644 compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.txt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/AbstractTracingStrategy.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/AbstractTracingStrategy.java index 179577e1f3c..62cec8d0bf3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/AbstractTracingStrategy.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/AbstractTracingStrategy.java @@ -225,7 +225,8 @@ public abstract class AbstractTracingStrategy implements TracingStrategy { ConstraintSystem systemWithoutExpectedTypeConstraint = ((ConstraintSystemImpl) constraintSystem).filterConstraintsOut(EXPECTED_TYPE_POSITION.position()); - JetType substitutedReturnType = systemWithoutExpectedTypeConstraint.getResultingSubstitutor().substitute(declaredReturnType, Variance.INVARIANT); + JetType substitutedReturnType = systemWithoutExpectedTypeConstraint.getResultingSubstitutor().substitute( + declaredReturnType, Variance.OUT_VARIANCE); assert substitutedReturnType != null; //todo assert !noExpectedType(data.expectedType) : "Expected type doesn't exist, but there is an expected type mismatch error"; diff --git a/compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.kt b/compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.kt new file mode 100644 index 00000000000..391d95f276c --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.kt @@ -0,0 +1,9 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER + +fun foo(a1: Array, a2: Array): T = null!! + +fun test(a1: Array, a2: Array) { + + val c: Int = foo(a1, a2) + +} diff --git a/compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.txt b/compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.txt new file mode 100644 index 00000000000..0b965cde280 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.txt @@ -0,0 +1,4 @@ +package + +internal fun foo(/*0*/ a1: kotlin.Array, /*1*/ a2: kotlin.Array): T +internal fun test(/*0*/ a1: kotlin.Array, /*1*/ a2: kotlin.Array): kotlin.Unit diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index f28aeb73ea6..6f97d0d3757 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -5178,6 +5178,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("expectedTypeMismatchWithInVariance.kt") + public void testExpectedTypeMismatchWithInVariance() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/inference/capturedTypes/expectedTypeMismatchWithInVariance.kt"); + doTest(fileName); + } + @TestMetadata("kt2570.kt") public void testKt2570() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/inference/capturedTypes/kt2570.kt");