From 3debf36d6084504afb201341d519332fe90bf9fc Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Tue, 22 Aug 2023 15:54:42 +0200 Subject: [PATCH] [FIR] DFA: add missing unwrap for FirDesugaredAssignmentValueReferenceExpression ^KT-60319 Fixed ^KT-61407 Fixed --- ...icCompilerTestFE10TestdataTestGenerated.java | 6 ++++++ ...nosticCompilerFE10TestDataTestGenerated.java | 6 ++++++ ...TreeOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ ...rPsiOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ .../jetbrains/kotlin/fir/resolve/dfa/util.kt | 2 +- .../tests/dataFlow/desugaredAssignment.fir.kt | 17 +++++++++++++++++ .../tests/dataFlow/desugaredAssignment.kt | 17 +++++++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 6 ++++++ 8 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.fir.kt create mode 100644 compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt 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 aa7a7f238b8..39d87592255 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 @@ -8248,6 +8248,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/dataFlow/CalleeExpression.kt"); } + @Test + @TestMetadata("desugaredAssignment.kt") + public void testDesugaredAssignment() throws Exception { + runTest("compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt"); + } + @Test @TestMetadata("EmptyIf.kt") public void testEmptyIf() throws Exception { 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 09a66942332..e01ce0dfe9e 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 @@ -8248,6 +8248,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/dataFlow/CalleeExpression.kt"); } + @Test + @TestMetadata("desugaredAssignment.kt") + public void testDesugaredAssignment() throws Exception { + runTest("compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt"); + } + @Test @TestMetadata("EmptyIf.kt") public void testEmptyIf() throws Exception { 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 da54a63a64e..d8694c57d10 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 @@ -8248,6 +8248,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/dataFlow/CalleeExpression.kt"); } + @Test + @TestMetadata("desugaredAssignment.kt") + public void testDesugaredAssignment() throws Exception { + runTest("compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt"); + } + @Test @TestMetadata("EmptyIf.kt") public void testEmptyIf() throws Exception { 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 74ccd467cc2..af1ea7fd622 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 @@ -8254,6 +8254,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/dataFlow/CalleeExpression.kt"); } + @Test + @TestMetadata("desugaredAssignment.kt") + public void testDesugaredAssignment() throws Exception { + runTest("compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt"); + } + @Test @TestMetadata("EmptyIf.kt") public void testEmptyIf() throws Exception { diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/util.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/util.kt index a3bc2d5a2b8..2516255f1c1 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/util.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/util.kt @@ -82,6 +82,6 @@ fun FirElement.unwrapElement(): FirElement = when (this) { is FirSafeCallExpression -> selector.unwrapElement() is FirCheckedSafeCallSubject -> originalReceiverRef.value.unwrapElement() is FirCheckNotNullCall -> argument.unwrapElement() + is FirDesugaredAssignmentValueReferenceExpression -> expressionRef.value.unwrapElement() else -> this } - diff --git a/compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.fir.kt b/compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.fir.kt new file mode 100644 index 00000000000..ab6d09e1815 --- /dev/null +++ b/compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.fir.kt @@ -0,0 +1,17 @@ +// WITH_STDLIB +package usage + +class MyClass1 +open class ABC { + open val nestedBlocks = ArrayList() + + fun makeInjectionBlocks() { + val l: List = listOf(1) + for (b in l) { + when (b) { + is Int -> nestedBlocks += b + else -> {} + } + } + } +} diff --git a/compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt b/compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt new file mode 100644 index 00000000000..1660ee8d874 --- /dev/null +++ b/compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt @@ -0,0 +1,17 @@ +// WITH_STDLIB +package usage + +class MyClass1 +open class ABC { + open val nestedBlocks = ArrayList() + + fun makeInjectionBlocks() { + val l: List = listOf(1) + for (b in l) { + when (b) { + is Int -> nestedBlocks += b + else -> {} + } + } + } +} 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 404b19e8936..865056d5b12 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 @@ -8254,6 +8254,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/dataFlow/CalleeExpression.kt"); } + @Test + @TestMetadata("desugaredAssignment.kt") + public void testDesugaredAssignment() throws Exception { + runTest("compiler/testData/diagnostics/tests/dataFlow/desugaredAssignment.kt"); + } + @Test @TestMetadata("EmptyIf.kt") public void testEmptyIf() throws Exception {