From 334e34b70bda3c6c513f8817c957a23f7cfcbf0f Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Tue, 20 Jul 2021 14:26:40 +0300 Subject: [PATCH] [JS PIR] Fix inliner. Do not mutate existed statement list Such list could be part of PIR structures --- .../backend/common/lower/inline/FunctionInlining.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt index cf6cabc1362..9d32e616ff4 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt @@ -195,8 +195,10 @@ class FunctionInlining( val irBuilder = context.createIrBuilder(irReturnableBlockSymbol, endOffset, endOffset) val transformer = ParameterSubstitutor() - statements.transform { it.transform(transformer, data = null) } - statements.addAll(0, evaluationStatements) + val newStatements = mutableListOf() + + newStatements.addAll(evaluationStatements) + statements.mapTo(newStatements) { it.transform(transformer, data = null) as IrStatement } return IrReturnableBlockImpl( startOffset = callSite.startOffset, @@ -204,7 +206,7 @@ class FunctionInlining( type = callSite.type, symbol = irReturnableBlockSymbol, origin = null, - statements = statements, + statements = newStatements, inlineFunctionSymbol = callee.symbol ).apply { transformChildrenVoid(object : IrElementTransformerVoid() {