IR: remove some usages of deepCopyWithVariables

At this point, `deepCopyWithVariables` is the same as
`deepCopyWithSymbols` except that the former doesn't call
`patchDeclarationParents`, which most likely produces incorrect IR in
some call sites.
This commit is contained in:
Alexander Udalov
2024-03-07 14:05:14 +01:00
committed by Space Team
parent e7e8cba1b4
commit 1d38c01afc
8 changed files with 28 additions and 43 deletions
@@ -9,19 +9,16 @@ import org.jetbrains.kotlin.backend.common.DeclarationTransformer
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.deepCopyWithVariables
import org.jetbrains.kotlin.ir.inline.InlineFunctionResolverReplacingCoroutineIntrinsics
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
internal class SaveInlineFunctionsBeforeInlining(context: JsIrBackendContext) : DeclarationTransformer {
private val inlineFunctionsBeforeInlining = context.mapping.inlineFunctionsBeforeInlining
override fun transformFlat(declaration: IrDeclaration): List<IrDeclaration>? {
if (declaration is IrFunction && declaration.isInline) {
inlineFunctionsBeforeInlining[declaration] = declaration.deepCopyWithVariables().also {
it.patchDeclarationParents(declaration.parent)
}
inlineFunctionsBeforeInlining[declaration] = declaration.deepCopyWithSymbols(declaration.parent)
}
return null