From f0238766df403590b7ff294dc9b5dbdc1002c421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Sch=C3=A4fer?= Date: Fri, 10 Jun 2022 14:17:42 +0200 Subject: [PATCH] JVM IR: Avoid patchDeclarationParents after inlining The code in IrInlineUtils.kt already updates declaration parents. --- .../kotlin/backend/common/lower/ArrayConstructorLowering.kt | 4 +--- .../jetbrains/kotlin/backend/jvm/lower/AssertionLowering.kt | 5 +---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ArrayConstructorLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ArrayConstructorLowering.kt index 36c1648f301..d96a9806e4c 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ArrayConstructorLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ArrayConstructorLowering.kt @@ -86,9 +86,7 @@ private class ArrayConstructorTransformer( +irCall(result.type.getClass()!!.functions.single { it.name == OperatorNameConventions.SET }).apply { dispatchReceiver = irGet(result) putValueArgument(0, irGet(tempIndex)) - val inlined = generator - .inline(parent, listOf(tempIndex)) - .patchDeclarationParents(scope.getLocalDeclarationParent()) + val inlined = generator.inline(parent, listOf(tempIndex)) putValueArgument(1, inlined) } val inc = index.type.getClass()!!.functions.single { it.name == OperatorNameConventions.INC } diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/AssertionLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/AssertionLowering.kt index f1eaccc14c6..313bcdaaa74 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/AssertionLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/AssertionLowering.kt @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl import org.jetbrains.kotlin.ir.util.getPackageFragment -import org.jetbrains.kotlin.ir.util.patchDeclarationParents import org.jetbrains.kotlin.ir.visitors.IrElementTransformer internal val assertionPhase = makeIrFilePhase( @@ -105,9 +104,7 @@ private class AssertionLowering(private val context: JvmBackendContext) : val generator = lambdaArgument?.asInlinable(this) val constructor = this@AssertionLowering.context.ir.symbols.assertionErrorConstructor val throwError = irThrow(irCall(constructor).apply { - val message = generator?.inline(parent)?.patchDeclarationParents(scope.getLocalDeclarationParent()) - ?: irString("Assertion failed") - putValueArgument(0, message) + putValueArgument(0, generator?.inline(parent) ?: irString("Assertion failed")) }) +irIfThen(irNot(assertCondition), throwError) }