From f85ad4167456711a71349435a81739def74f5cbd Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 19 Mar 2021 12:12:28 +0300 Subject: [PATCH] [IR] Check pureness in inlining lowering after transformation --- .../kotlin/backend/common/lower/inline/FunctionInlining.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 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 19608239f3d..53e69482d6c 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 @@ -546,11 +546,11 @@ class FunctionInlining( return@forEach } - val argumentExtracted = !argument.argumentExpression.isPure(false) - // Arguments may reference the previous ones - substitute them. val variableInitializer = argument.argumentExpression.transform(substitutor, data = null) + val argumentExtracted = !argument.argumentExpression.isPure(false, context = context) + if (!argumentExtracted) { substituteMap[argument.parameter] = variableInitializer } else {