From 0940707fd4ede91a30cfb4ae6300f67b8581f1e3 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 7 Oct 2022 12:21:01 +0200 Subject: [PATCH] FE: add reproducer for KT-54004 --- ...CompilerTestFE10TestdataTestGenerated.java | 6 ++++++ ...irOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ ...DiagnosticsWithLightTreeTestGenerated.java | 6 ++++++ .../builderInference/unsafeAssignment.fir.kt | 20 +++++++++++++++++++ .../builderInference/unsafeAssignment.kt | 20 +++++++++++++++++++ .../builderInference/unsafeAssignment.txt | 13 ++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 6 ++++++ 7 files changed, 77 insertions(+) create mode 100644 compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.fir.kt create mode 100644 compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt create mode 100644 compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.txt 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 a6b46eff74c..1fd941fa0c7 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 @@ -35766,6 +35766,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/typeVariableShouldNotBeFixed.kt"); } + @Test + @TestMetadata("unsafeAssignment.kt") + public void testUnsafeAssignment() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt"); + } + @Test @TestMetadata("useInferenceInformationFromExtension.kt") public void testUseInferenceInformationFromExtension() 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 9cf252ba0dc..36811b9a3ec 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 @@ -35766,6 +35766,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/typeVariableShouldNotBeFixed.kt"); } + @Test + @TestMetadata("unsafeAssignment.kt") + public void testUnsafeAssignment() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt"); + } + @Test @TestMetadata("useInferenceInformationFromExtension.kt") public void testUseInferenceInformationFromExtension() 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 94572d45052..90239d0ee7a 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 @@ -35766,6 +35766,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/typeVariableShouldNotBeFixed.kt"); } + @Test + @TestMetadata("unsafeAssignment.kt") + public void testUnsafeAssignment() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt"); + } + @Test @TestMetadata("useInferenceInformationFromExtension.kt") public void testUseInferenceInformationFromExtension() throws Exception { diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.fir.kt new file mode 100644 index 00000000000..be88ad821b5 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.fir.kt @@ -0,0 +1,20 @@ +class Foo { + fun doSmthng(arg: T) {} + var a: T? = null +} + +fun myBuilder(block: Foo.() -> Unit) : Foo = Foo().apply(block) + +fun main() { + myBuilder { + a = "some string" + } + + val x = 57 + val value = myBuilder { + doSmthng("one ") + a = 57 + a = x + } + println(value.a?.count { it in 'l' .. 'q' }) +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt new file mode 100644 index 00000000000..8e43dbee609 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt @@ -0,0 +1,20 @@ +class Foo { + fun doSmthng(arg: T) {} + var a: T? = null +} + +fun myBuilder(block: Foo.() -> Unit) : Foo = Foo().apply(block) + +fun main() { + myBuilder { + a = "some string" + } + + val x = 57 + val value = myBuilder { + doSmthng("one ") + a = 57 + a = x + } + println(value.a?.count { it in 'l' .. 'q' }) +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.txt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.txt new file mode 100644 index 00000000000..be66b279ff2 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.txt @@ -0,0 +1,13 @@ +package + +public fun main(): kotlin.Unit +public fun myBuilder(/*0*/ block: Foo.() -> kotlin.Unit): Foo + +public final class Foo { + public constructor Foo() + public final var a: T? + public final fun doSmthng(/*0*/ arg: T): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} 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 7a7c9b48448..c9cb294e1df 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 @@ -35856,6 +35856,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/typeVariableShouldNotBeFixed.kt"); } + @Test + @TestMetadata("unsafeAssignment.kt") + public void testUnsafeAssignment() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt"); + } + @Test @TestMetadata("useInferenceInformationFromExtension.kt") public void testUseInferenceInformationFromExtension() throws Exception {