diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFirTestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFirTestdataTestGenerated.java index 4e855d8a8ca..70844ec04eb 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFirTestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFirTestdataTestGenerated.java @@ -3152,6 +3152,18 @@ public class DiagnosticCompilerTestFirTestdataTestGenerated extends AbstractDiag runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invoke.kt"); } + @Test + @TestMetadata("invokeCustomTypeExt.kt") + public void testInvokeCustomTypeExt() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.kt"); + } + + @Test + @TestMetadata("invokeCustomTypeMember.kt") + public void testInvokeCustomTypeMember() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.kt"); + } + @Test @TestMetadata("invokeKFunction.kt") public void testInvokeKFunction() throws Exception { @@ -3170,6 +3182,30 @@ public class DiagnosticCompilerTestFirTestdataTestGenerated extends AbstractDiag runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeKSuspendFunction.kt"); } + @Test + @TestMetadata("invokeOverload1.kt") + public void testInvokeOverload1() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.kt"); + } + + @Test + @TestMetadata("invokeOverload2.kt") + public void testInvokeOverload2() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.kt"); + } + + @Test + @TestMetadata("invokeSuspend.kt") + public void testInvokeSuspend() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.kt"); + } + + @Test + @TestMetadata("invokeWithExtensionReceiver.kt") + public void testInvokeWithExtensionReceiver() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.kt"); + } + @Test @TestMetadata("lambda.kt") public void testLambda() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated.java index 0563bfa62e7..a916519201e 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated.java @@ -3152,6 +3152,18 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invoke.kt"); } + @Test + @TestMetadata("invokeCustomTypeExt.kt") + public void testInvokeCustomTypeExt() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.kt"); + } + + @Test + @TestMetadata("invokeCustomTypeMember.kt") + public void testInvokeCustomTypeMember() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.kt"); + } + @Test @TestMetadata("invokeKFunction.kt") public void testInvokeKFunction() throws Exception { @@ -3170,6 +3182,30 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeKSuspendFunction.kt"); } + @Test + @TestMetadata("invokeOverload1.kt") + public void testInvokeOverload1() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.kt"); + } + + @Test + @TestMetadata("invokeOverload2.kt") + public void testInvokeOverload2() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.kt"); + } + + @Test + @TestMetadata("invokeSuspend.kt") + public void testInvokeSuspend() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.kt"); + } + + @Test + @TestMetadata("invokeWithExtensionReceiver.kt") + public void testInvokeWithExtensionReceiver() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.kt"); + } + @Test @TestMetadata("lambda.kt") public void testLambda() throws Exception { diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.fir.txt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.fir.txt new file mode 100644 index 00000000000..a9f2eb23b3a --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.fir.txt @@ -0,0 +1,13 @@ +FILE: invokeCustomTypeExt.kt + public final class Foo : R|kotlin/Any| { + public constructor(): R|Foo| { + super() + } + + } + public final operator fun R|Foo|.invoke(): R|kotlin/Unit| { + } + public final fun foo(): R|kotlin/Unit| { + lval x: R|Foo| = R|/Foo.Foo|() + R|/x|.R|/invoke|() + } diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.kt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.kt new file mode 100644 index 00000000000..de12a288549 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.kt @@ -0,0 +1,9 @@ +class Foo + +operator fun Foo.invoke() {} + +fun foo() { + val x = Foo() + + x() +} diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.fir.txt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.fir.txt new file mode 100644 index 00000000000..9d8dabf52fd --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.fir.txt @@ -0,0 +1,14 @@ +FILE: invokeCustomTypeMember.kt + public final class Foo : R|kotlin/Any| { + public constructor(): R|Foo| { + super() + } + + public final operator fun invoke(): R|kotlin/Unit| { + } + + } + public final fun foo(): R|kotlin/Unit| { + lval x: R|Foo| = R|/Foo.Foo|() + R|/x|.R|/Foo.invoke|() + } diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.kt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.kt new file mode 100644 index 00000000000..2517cc38eb5 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.kt @@ -0,0 +1,9 @@ +class Foo { + operator fun invoke() {} +} + +fun foo() { + val x = Foo() + + x() +} diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.fir.txt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.fir.txt new file mode 100644 index 00000000000..42ea93400bc --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.fir.txt @@ -0,0 +1,13 @@ +FILE: invokeOverload1.kt + public final fun foo(): R|kotlin/Unit| { + lval x: R|(kotlin/String) -> kotlin/Unit| = fun (s: R|kotlin/String|): R|kotlin/Unit| { + } + + local final fun nested(): R|kotlin/Unit| { + lval x: R|(kotlin/Int) -> kotlin/Unit| = fun (i: R|kotlin/Int|): R|kotlin/Unit| { + } + + R|/x|.R|SubstitutionOverride|(String(hello)) + } + + } diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.kt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.kt new file mode 100644 index 00000000000..4f5828ef156 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.kt @@ -0,0 +1,9 @@ +fun foo() { + val x = fun(s: String) {} + + fun nested() { + val x = fun(i: Int) {} + + x("hello") + } +} diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.fir.txt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.fir.txt new file mode 100644 index 00000000000..99ec2c50d04 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.fir.txt @@ -0,0 +1,13 @@ +FILE: invokeOverload2.kt + public final fun foo(): R|kotlin/Unit| { + lval x: R|(kotlin/String) -> kotlin/Unit| = fun (s: R|kotlin/String|): R|kotlin/Unit| { + } + + local final fun nested(): R|kotlin/Unit| { + lval x: R|(kotlin/Int) -> kotlin/Unit| = fun (i: R|kotlin/Int|): R|kotlin/Unit| { + } + + R|/x|.R|SubstitutionOverride|(Int(10)) + } + + } diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.kt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.kt new file mode 100644 index 00000000000..09c7c40860d --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.kt @@ -0,0 +1,9 @@ +fun foo() { + val x = fun(s: String) {} + + fun nested() { + val x = fun(i: Int) {} + + x(10) + } +} diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.fir.txt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.fir.txt new file mode 100644 index 00000000000..dae04ac0aee --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.fir.txt @@ -0,0 +1,5 @@ +FILE: invokeSuspend.kt + public final suspend fun foo(action: R|suspend () -> kotlin/Unit|): R|kotlin/Unit| { + lval x: R|suspend () -> kotlin/Unit| = R|/action| + R|/x|.R|SubstitutionOverride|() + } diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.kt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.kt new file mode 100644 index 00000000000..96949baebaf --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.kt @@ -0,0 +1,5 @@ +suspend fun foo(action: suspend () -> Unit) { + val x = action + + x() +} diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.fir.txt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.fir.txt new file mode 100644 index 00000000000..a81c967cdc6 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.fir.txt @@ -0,0 +1,7 @@ +FILE: invokeWithExtensionReceiver.kt + public final fun foo(): R|kotlin/Unit| { + lval ext: R|kotlin/String.(kotlin/Int) -> kotlin/Unit| + lval usedReceiver: R|kotlin/String| = String(foo) + lval unusedReceiver: R|kotlin/String| = String(bar) + R|/ext|.R|SubstitutionOverride|(R|/usedReceiver|, Int(10)) + } diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.kt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.kt new file mode 100644 index 00000000000..5ce6457925e --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.kt @@ -0,0 +1,9 @@ +fun foo() { + val ext: String.(Int) -> Unit + + val usedReceiver = "foo" + + val unusedReceiver = "bar" + + usedReceiver.ext(10) +} diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsTestGenerated.java index dd5b7a22222..a5316569d76 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsTestGenerated.java @@ -3152,6 +3152,18 @@ public class FirLightTreeDiagnosticsTestGenerated extends AbstractFirLightTreeDi runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invoke.kt"); } + @Test + @TestMetadata("invokeCustomTypeExt.kt") + public void testInvokeCustomTypeExt() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.kt"); + } + + @Test + @TestMetadata("invokeCustomTypeMember.kt") + public void testInvokeCustomTypeMember() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.kt"); + } + @Test @TestMetadata("invokeKFunction.kt") public void testInvokeKFunction() throws Exception { @@ -3170,6 +3182,30 @@ public class FirLightTreeDiagnosticsTestGenerated extends AbstractFirLightTreeDi runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeKSuspendFunction.kt"); } + @Test + @TestMetadata("invokeOverload1.kt") + public void testInvokeOverload1() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.kt"); + } + + @Test + @TestMetadata("invokeOverload2.kt") + public void testInvokeOverload2() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.kt"); + } + + @Test + @TestMetadata("invokeSuspend.kt") + public void testInvokeSuspend() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.kt"); + } + + @Test + @TestMetadata("invokeWithExtensionReceiver.kt") + public void testInvokeWithExtensionReceiver() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.kt"); + } + @Test @TestMetadata("lambda.kt") public void testLambda() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiDiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiDiagnosticTestGenerated.java index 7bfa74063f7..827dbc7b549 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiDiagnosticTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiDiagnosticTestGenerated.java @@ -3152,6 +3152,18 @@ public class FirPsiDiagnosticTestGenerated extends AbstractFirPsiDiagnosticTest runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invoke.kt"); } + @Test + @TestMetadata("invokeCustomTypeExt.kt") + public void testInvokeCustomTypeExt() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeExt.kt"); + } + + @Test + @TestMetadata("invokeCustomTypeMember.kt") + public void testInvokeCustomTypeMember() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeCustomTypeMember.kt"); + } + @Test @TestMetadata("invokeKFunction.kt") public void testInvokeKFunction() throws Exception { @@ -3170,6 +3182,30 @@ public class FirPsiDiagnosticTestGenerated extends AbstractFirPsiDiagnosticTest runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeKSuspendFunction.kt"); } + @Test + @TestMetadata("invokeOverload1.kt") + public void testInvokeOverload1() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload1.kt"); + } + + @Test + @TestMetadata("invokeOverload2.kt") + public void testInvokeOverload2() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeOverload2.kt"); + } + + @Test + @TestMetadata("invokeSuspend.kt") + public void testInvokeSuspend() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeSuspend.kt"); + } + + @Test + @TestMetadata("invokeWithExtensionReceiver.kt") + public void testInvokeWithExtensionReceiver() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/extendedCheckers/unused/invokeWithExtensionReceiver.kt"); + } + @Test @TestMetadata("lambda.kt") public void testLambda() throws Exception {