From f6ad6fb81607c8ca124787e8f790477847c83786 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 18 Aug 2022 13:55:43 +0200 Subject: [PATCH] Add test for stub type receiver and for KT-53639 --- ...CompilerTestFE10TestdataTestGenerated.java | 12 ++++++++++ ...irOldFrontendDiagnosticsTestGenerated.java | 12 ++++++++++ ...DiagnosticsWithLightTreeTestGenerated.java | 12 ++++++++++ .../errorOnStubReceiver.fir.kt | 21 ++++++++++++++++ .../errorOnStubReceiver.fir.txt | 24 +++++++++++++++++++ .../builderInference/errorOnStubReceiver.kt | 21 ++++++++++++++++ .../inference/builderInference/kt53639.fir.kt | 19 +++++++++++++++ .../inference/builderInference/kt53639.kt | 19 +++++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 12 ++++++++++ 9 files changed, 152 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.fir.kt create mode 100644 compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.fir.txt create mode 100644 compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt create mode 100644 compiler/testData/diagnostics/tests/inference/builderInference/kt53639.fir.kt create mode 100644 compiler/testData/diagnostics/tests/inference/builderInference/kt53639.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 b6e9a3cb2df..8d8e79f06ba 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 @@ -14343,6 +14343,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/inference/builderInference/equalityChecksOnIntegerTypesProgressive.kt"); } + @Test + @TestMetadata("errorOnStubReceiver.kt") + public void testErrorOnStubReceiver() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt"); + } + @Test @TestMetadata("kt47744.kt") public void testKt47744() throws Exception { @@ -14439,6 +14445,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt"); } + @Test + @TestMetadata("kt53639.kt") + public void testKt53639() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53639.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 f6086378507..99857507fec 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 @@ -14343,6 +14343,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/inference/builderInference/equalityChecksOnIntegerTypesProgressive.kt"); } + @Test + @TestMetadata("errorOnStubReceiver.kt") + public void testErrorOnStubReceiver() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt"); + } + @Test @TestMetadata("kt47744.kt") public void testKt47744() throws Exception { @@ -14439,6 +14445,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt"); } + @Test + @TestMetadata("kt53639.kt") + public void testKt53639() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53639.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 9cdee947638..29345c9a08a 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 @@ -14343,6 +14343,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/inference/builderInference/equalityChecksOnIntegerTypesProgressive.kt"); } + @Test + @TestMetadata("errorOnStubReceiver.kt") + public void testErrorOnStubReceiver() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt"); + } + @Test @TestMetadata("kt47744.kt") public void testKt47744() throws Exception { @@ -14439,6 +14445,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt"); } + @Test + @TestMetadata("kt53639.kt") + public void testKt53639() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53639.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception { diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.fir.kt new file mode 100644 index 00000000000..655a98ec345 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.fir.kt @@ -0,0 +1,21 @@ +// WITH_STDLIB +// FIR_DUMP +// SKIP_TXT + +fun Any?.test() {} + +class Bar { + fun test() {} +} + +fun main() { + + buildList { + add(Bar()) + this.get(0).test() // resolved to Any?.test + } + buildList { + add(Bar()) + this.get(0).test() // resolved to Bar.test + } +} diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.fir.txt b/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.fir.txt new file mode 100644 index 00000000000..d52da222f5c --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.fir.txt @@ -0,0 +1,24 @@ +FILE: errorOnStubReceiver.fir.kt + public final fun R|kotlin/Any?|.test(): R|kotlin/Unit| { + } + public final class Bar : R|kotlin/Any| { + public constructor(): R|Bar| { + super() + } + + public final fun test(): R|kotlin/Unit| { + } + + } + public final fun main(): R|kotlin/Unit| { + R|kotlin/collections/buildList|( = buildList@fun R|kotlin/collections/MutableList|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|SubstitutionOverride|(R|/Bar.Bar|()) + this@R|special/anonymous|.R|SubstitutionOverride|(Int(0)).R|/test|() + } + ) + R|kotlin/collections/buildList|( = buildList@fun R|kotlin/collections/MutableList|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|SubstitutionOverride|(R|/Bar.Bar|()) + this@R|special/anonymous|.R|SubstitutionOverride|(Int(0)).R|/Bar.test|() + } + ) + } diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt b/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt new file mode 100644 index 00000000000..655a98ec345 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt @@ -0,0 +1,21 @@ +// WITH_STDLIB +// FIR_DUMP +// SKIP_TXT + +fun Any?.test() {} + +class Bar { + fun test() {} +} + +fun main() { + + buildList { + add(Bar()) + this.get(0).test() // resolved to Any?.test + } + buildList { + add(Bar()) + this.get(0).test() // resolved to Bar.test + } +} diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/kt53639.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/kt53639.fir.kt new file mode 100644 index 00000000000..ece7065f880 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/builderInference/kt53639.fir.kt @@ -0,0 +1,19 @@ +// WITH_STDLIB +// SKIP_TXT +fun InputWrapper.doMapping( + foo: (From) -> List, + bar: (List) -> Boolean = { it.isNotEmpty() }, +) = InputWrapper(value = foo(value)) + +data class InputWrapper(val value: TItem) + +data class Output(val source: InputWrapper>) + +fun main2(input: InputWrapper): Output { + val output = input.doMapping( + foo = { buildList { add("this is List") } }, + bar = { it.isNotEmpty() }, + ) + + return Output(source = output) +} diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/kt53639.kt b/compiler/testData/diagnostics/tests/inference/builderInference/kt53639.kt new file mode 100644 index 00000000000..9136d0093eb --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/builderInference/kt53639.kt @@ -0,0 +1,19 @@ +// WITH_STDLIB +// SKIP_TXT +fun InputWrapper.doMapping( + foo: (From) -> List, + bar: (List) -> Boolean = { it.isNotEmpty() }, +) = InputWrapper(value = foo(value)) + +data class InputWrapper(val value: TItem) + +data class Output(val source: InputWrapper>) + +fun main2(input: InputWrapper): Output { + val output = input.doMapping( + foo = { buildList { add("this is List") } }, + bar = { it.isNotEmpty() }, + ) + + return Output(source = output) +} 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 b47b8e4cab2..8e10da119f8 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 @@ -14349,6 +14349,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/inference/builderInference/equalityChecksOnIntegerTypesProgressive.kt"); } + @Test + @TestMetadata("errorOnStubReceiver.kt") + public void testErrorOnStubReceiver() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt"); + } + @Test @TestMetadata("kt47744.kt") public void testKt47744() throws Exception { @@ -14445,6 +14451,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53422.kt"); } + @Test + @TestMetadata("kt53639.kt") + public void testKt53639() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/kt53639.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception {