Report error about uninferred type parameter for all CallForImplicitInvoke psi calls

^KT-44368 Fixed
This commit is contained in:
Victor Petukhov
2021-02-04 15:31:10 +03:00
parent c75d2c05f0
commit f9e5584a3e
6 changed files with 33 additions and 2 deletions
@@ -11835,6 +11835,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
runTest("compiler/testData/diagnostics/tests/inference/equalitySubstitutionInsideNonInvariantType.kt");
}
@Test
@TestMetadata("errorsOnImplicitInvokeInSimpleCall.kt")
public void testErrorsOnImplicitInvokeInSimpleCall() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/errorsOnImplicitInvokeInSimpleCall.kt");
}
@Test
@TestMetadata("expectedTypeAdditionalTest.kt")
public void testExpectedTypeAdditionalTest() throws Exception {
@@ -446,8 +446,14 @@ class DiagnosticReporterByTrackingStrategy(
if (isDiagnosticRedundant) return
val expression = when (val atom = error.resolvedAtom.atom) {
is PSIKotlinCallForInvoke -> (atom.psiCall as? CallTransformer.CallForImplicitInvoke)?.outerCall?.calleeExpression
is PSIKotlinCall -> atom.psiCall.calleeExpression
is PSIKotlinCall -> {
val psiCall = atom.psiCall
if (psiCall is CallTransformer.CallForImplicitInvoke) {
psiCall.outerCall.calleeExpression
} else {
psiCall.calleeExpression
}
}
is PSIKotlinCallArgument -> atom.valueArgument.getArgumentExpression()
else -> call.calleeExpression
} ?: return
@@ -0,0 +1,4 @@
inline operator fun <reified T> Int.invoke() = this
val a2 = 1()
val a3 = 1.invoke()
@@ -0,0 +1,4 @@
inline operator fun <reified T> Int.invoke() = this
val a2 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>1<!>()
val a3 = 1.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>invoke<!>()
@@ -0,0 +1,5 @@
package
public val a2: kotlin.Int
public val a3: kotlin.Int
public inline operator fun </*0*/ reified T> kotlin.Int.invoke(): kotlin.Int
@@ -11841,6 +11841,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/inference/equalitySubstitutionInsideNonInvariantType.kt");
}
@Test
@TestMetadata("errorsOnImplicitInvokeInSimpleCall.kt")
public void testErrorsOnImplicitInvokeInSimpleCall() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/errorsOnImplicitInvokeInSimpleCall.kt");
}
@Test
@TestMetadata("expectedTypeAdditionalTest.kt")
public void testExpectedTypeAdditionalTest() throws Exception {