From 7278f9a4fdc25012bb491ac1510209bcbfdb7be1 Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Thu, 3 Nov 2022 10:44:25 +0800 Subject: [PATCH] JVM Inline: Update tryCatchBlocks when expand mask conditions Fixes: KT-48989 --- .../jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt | 4 ++++ .../runners/codegen/FirBlackBoxCodegenTestGenerated.java | 6 ++++++ compiler/testData/codegen/box/functions/kt48989.kt | 9 +++++++++ .../runners/codegen/IrBlackBoxCodegenTestGenerated.java | 6 ++++++ 4 files changed, 25 insertions(+) create mode 100644 compiler/testData/codegen/box/functions/kt48989.kt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt index a081a599c94..fbdc32f5d11 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt @@ -112,6 +112,10 @@ fun expandMaskConditionsAndUpdateVariableNodes( (it.start in toDelete && it.end in toDelete) || validOffsets.contains(it.index) } + node.tryCatchBlocks.removeIf { + toDelete.contains(it.start) && toDelete.contains(it.end) + } + node.remove(toDelete) return defaultLambdasInfo diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index deace6babc8..a41c1b4c812 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -18937,6 +18937,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/functions/kt48058.kt"); } + @Test + @TestMetadata("kt48989.kt") + public void testKt48989() throws Exception { + runTest("compiler/testData/codegen/box/functions/kt48989.kt"); + } + @Test @TestMetadata("kt785.kt") public void testKt785() throws Exception { diff --git a/compiler/testData/codegen/box/functions/kt48989.kt b/compiler/testData/codegen/box/functions/kt48989.kt new file mode 100644 index 00000000000..bf49e07aa15 --- /dev/null +++ b/compiler/testData/codegen/box/functions/kt48989.kt @@ -0,0 +1,9 @@ +// TARGET_BACKEND: JVM_IR +fun box() = inlineFunctionWithDefaultArguments("OK") + +inline fun inlineFunctionWithDefaultArguments( + p0: String = try { + "42" + } finally { + }, p1: Any = p0 +) = p1 \ No newline at end of file diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 0289dffb49d..3d187f07e39 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -18937,6 +18937,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/functions/kt48058.kt"); } + @Test + @TestMetadata("kt48989.kt") + public void testKt48989() throws Exception { + runTest("compiler/testData/codegen/box/functions/kt48989.kt"); + } + @Test @TestMetadata("kt785.kt") public void testKt785() throws Exception {