diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsMapping.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsMapping.kt index d5fff19e7b5..344820b5b88 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsMapping.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsMapping.kt @@ -8,8 +8,6 @@ package org.jetbrains.kotlin.ir.backend.js import org.jetbrains.kotlin.backend.common.DefaultMapping import org.jetbrains.kotlin.backend.common.Mapping import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.expressions.IrExpression -import org.jetbrains.kotlin.ir.expressions.IrExpressionBody class JsMapping : DefaultMapping() { val outerThisFieldSymbols = newMapping() @@ -32,8 +30,6 @@ class JsMapping : DefaultMapping() { val enumEntryToCorrespondingField = newMapping() val enumClassToInitEntryInstancesFun = newMapping() - val lazyInitialisedFields = newMapping() - // Triggers `StageController.lazyLower` on access override fun newMapping(): Mapping.Delegate = object : Mapping.Delegate() { private val map: MutableMap = mutableMapOf() diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyLazyInitLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyLazyInitLowering.kt index 61e682e40cc..087c16e8bbe 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyLazyInitLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyLazyInitLowering.kt @@ -51,11 +51,13 @@ class PropertyLazyInitLowering( val file = container.parent as? IrFile ?: return - val initFun = (if (file in fileToInitialisationFuns) { - fileToInitialisationFuns[file] - } else { - createInitialisationFunction(file).also { - fileToInitialisationFuns[file] = it + val initFun = (when { + file in fileToInitialisationFuns -> fileToInitialisationFuns[file] + fileToPurenessInitializers[file] == true -> null + else -> { + createInitialisationFunction(file).also { + fileToInitialisationFuns[file] = it + } } }) ?: return @@ -95,6 +97,7 @@ class PropertyLazyInitLowering( if (fieldToInitializer.isEmpty()) return null val allFieldsInFilePure = allFieldsInFilePure(fieldToInitializer.values) + fileToPurenessInitializers[file] = allFieldsInFilePure if (allFieldsInFilePure) { return null }