diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/dce/UsefulDeclarationProcessor.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/dce/UsefulDeclarationProcessor.kt index 48b6c584353..ec61c7aab19 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/dce/UsefulDeclarationProcessor.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/dce/UsefulDeclarationProcessor.kt @@ -57,7 +57,10 @@ abstract class UsefulDeclarationProcessor( super.visitBlock(expression, data) if (expression is IrReturnableBlock) { - expression.inlineFunction?.addToUsefulPolyfilledDeclarations() + // We need to extract `originalFunction` here because saved `inlineFunction` + // is actually a copy made in `SaveInlineFunctionsBeforeInlining`. + // Without this, we are not going to find proper intersection in the `saveOnlyIntersectionOfNextDeclarationsFor` method. + expression.inlineFunction?.originalFunction?.addToUsefulPolyfilledDeclarations() } } diff --git a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt index 8882d90b004..65ecd6abecb 100644 --- a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt +++ b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/FunctionInlining.kt @@ -123,7 +123,7 @@ class FunctionInlining( ?: containerScope?.irElement as? IrDeclarationParent ?: (containerScope?.irElement as? IrDeclaration)?.parent - val inliner = Inliner(expression, actualCallee, target, currentScope ?: containerScope!!, parent, context) + val inliner = Inliner(expression, actualCallee, currentScope ?: containerScope!!, parent, context) return inliner.inline().markAsRegenerated() } @@ -149,7 +149,6 @@ class FunctionInlining( private inner class Inliner( val callSite: IrFunctionAccessExpression, val callee: IrFunction, - val originalCallee: IrFunction, val currentScope: ScopeWithIr, val parent: IrDeclarationParent?, val context: CommonBackendContext @@ -169,7 +168,7 @@ class FunctionInlining( val substituteMap = mutableMapOf() - fun inline() = inlineFunction(callSite, callee, originalCallee, true) + fun inline() = inlineFunction(callSite, callee, callee, true) private fun E.copy(): E { @Suppress("UNCHECKED_CAST")