From 5cbecd276c44bec8b0bda5ae46b23cdc83040625 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 2 Aug 2022 15:11:28 +0200 Subject: [PATCH] FE: add test reproducing builder inference problem from KT-53422 --- ...CompilerTestFE10TestdataTestGenerated.java | 6 +++ ...irOldFrontendDiagnosticsTestGenerated.java | 6 +++ ...DiagnosticsWithLightTreeTestGenerated.java | 6 +++ .../inference/builderInference/kt53422.kt | 40 +++++++++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 6 +++ 5 files changed, 64 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 77c947ffd28..b6e9a3cb2df 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -14433,6 +14433,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt51464.kt"); } + @Test + @TestMetadata("kt53422.kt") + public void testKt53422() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index a134d919947..f6086378507 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -14433,6 +14433,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt51464.kt"); } + @Test + @TestMetadata("kt53422.kt") + public void testKt53422() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index f85fe14b525..9cdee947638 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -14433,6 +14433,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt51464.kt"); } + @Test + @TestMetadata("kt53422.kt") + public void testKt53422() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception { diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt b/compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt new file mode 100644 index 00000000000..8d64d72ff72 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt @@ -0,0 +1,40 @@ +// FIR_IDENTICAL +// WITH_STDLIB +// SKIP_TXT +fun test() { + foo( + flow { emit(0) } + ) { it.collect {} } +} + +fun foo( + bar: F, + block: Scope.(F) -> Unit +) {} + +@OptIn(kotlin.experimental.ExperimentalTypeInference::class) +fun flow(BuilderInference block: FlowCollector.()->Unit): Flow { + val collector = FlowCollectorImpl() + collector.block() + return object : Flow { + override fun collect(collector: FlowCollector) { + } + } +} + +class Scope + +interface Flow { + fun collect(collector: FlowCollector) +} + +fun interface FlowCollector { + + fun emit(value: I) +} + +class FlowCollectorImpl : FlowCollector { + override fun emit(value: C) {} +} + +fun Flow<*>.collect() {} 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 f92447b5750..b47b8e4cab2 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 @@ -14439,6 +14439,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt51464.kt"); } + @Test + @TestMetadata("kt53422.kt") + public void testKt53422() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception {