diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 7be124c467a..2e97c95dbb8 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -3838,6 +3838,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/builderInference"), Pattern.compile("^(.+)\\.(kt|kts)$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); } + @Test + @TestMetadata("overloadResolutionByLambdaReturnType.kt") + public void testOverloadResolutionByLambdaReturnType() throws Exception { + runTest("compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.kt"); + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/builderInference/issues") @TestDataPath("$PROJECT_ROOT") diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 81ee01406e2..d9d6e8fb92b 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -3838,6 +3838,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/builderInference"), Pattern.compile("^(.+)\\.(kt|kts)$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); } + @Test + @TestMetadata("overloadResolutionByLambdaReturnType.kt") + public void testOverloadResolutionByLambdaReturnType() throws Exception { + runTest("compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.kt"); + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/builderInference/issues") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index e646045f8c0..d9e61555e70 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -3832,6 +3832,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/builderInference"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true, "multiplatform"); } + @Test + @TestMetadata("overloadResolutionByLambdaReturnType.kt") + public void testOverloadResolutionByLambdaReturnType() throws Exception { + runTest("compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.kt"); + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/builderInference/issues") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 055f6576689..c9bbe53a75a 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -3838,6 +3838,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/builderInference"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true, "multiplatform"); } + @Test + @TestMetadata("overloadResolutionByLambdaReturnType.kt") + public void testOverloadResolutionByLambdaReturnType() throws Exception { + runTest("compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.kt"); + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/builderInference/issues") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirOverloadByLambdaReturnTypeResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirOverloadByLambdaReturnTypeResolver.kt index 74a476c881e..cbe7016f4a1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirOverloadByLambdaReturnTypeResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirOverloadByLambdaReturnTypeResolver.kt @@ -118,6 +118,7 @@ class FirOverloadByLambdaReturnTypeResolver( firstAtom, firstCandidate, forOverloadByLambdaReturnType = true, + // we explicitly decided not to use PCLA in that case because this case didn't work before in K1 withPCLASession = false, ) while (iterator.hasNext()) { diff --git a/compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.fir.kt b/compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.fir.kt new file mode 100644 index 00000000000..bad9c381be5 --- /dev/null +++ b/compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.fir.kt @@ -0,0 +1,17 @@ +// WITH_STDLIB + +import kotlin.experimental.ExperimentalTypeInference + +@OptIn(ExperimentalTypeInference::class) +@OverloadResolutionByLambdaReturnType +fun buildL(x: MutableList.() -> Int): Int = 1 +@OptIn(ExperimentalTypeInference::class) +@OverloadResolutionByLambdaReturnType +fun buildL(x: MutableList.() -> String): String = "" + +fun main() { + buildL { + add("") + "" + } +} diff --git a/compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.kt b/compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.kt new file mode 100644 index 00000000000..812b37503b2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.kt @@ -0,0 +1,17 @@ +// WITH_STDLIB + +import kotlin.experimental.ExperimentalTypeInference + +@OptIn(ExperimentalTypeInference::class) +@OverloadResolutionByLambdaReturnType +fun buildL(x: MutableList.() -> Int): Int = 1 +@OptIn(ExperimentalTypeInference::class) +@OverloadResolutionByLambdaReturnType +fun buildL(x: MutableList.() -> String): String = "" + +fun main() { + buildL { + add("") + "" + } +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index bb1433acff6..77638b596ba 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -3838,6 +3838,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/builderInference"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); } + @Test + @TestMetadata("overloadResolutionByLambdaReturnType.kt") + public void testOverloadResolutionByLambdaReturnType() throws Exception { + runTest("compiler/testData/diagnostics/tests/builderInference/overloadResolutionByLambdaReturnType.kt"); + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/builderInference/issues") @TestDataPath("$PROJECT_ROOT")