diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BlockDecomposerLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BlockDecomposerLowering.kt
index 7c37800..0022b4a 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BlockDecomposerLowering.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BlockDecomposerLowering.kt
@@ -5,7 +5,7 @@
 
 package org.jetbrains.kotlin.ir.backend.js.lower
 
-import org.jetbrains.kotlin.backend.common.FunctionLoweringPass
+import org.jetbrains.kotlin.backend.common.DeclarationContainerLoweringPass
 import org.jetbrains.kotlin.builtins.KotlinBuiltIns
 import org.jetbrains.kotlin.ir.IrElement
 import org.jetbrains.kotlin.ir.IrStatement
@@ -14,9 +14,7 @@
 import org.jetbrains.kotlin.ir.backend.js.symbols.JsSymbolBuilder
 import org.jetbrains.kotlin.ir.backend.js.symbols.initialize
 import org.jetbrains.kotlin.ir.backend.js.utils.Namer
-import org.jetbrains.kotlin.ir.declarations.IrField
-import org.jetbrains.kotlin.ir.declarations.IrFunction
-import org.jetbrains.kotlin.ir.declarations.IrVariable
+import org.jetbrains.kotlin.ir.declarations.*
 import org.jetbrains.kotlin.ir.expressions.*
 import org.jetbrains.kotlin.ir.expressions.impl.*
 import org.jetbrains.kotlin.ir.util.transformFlat
@@ -26,8 +24,7 @@
 
 private typealias VisitData = Nothing?
 
-class BlockDecomposerLowering(val context: JsIrBackendContext) : FunctionLoweringPass {
-
+class BlockDecomposerLowering(val context: JsIrBackendContext) : DeclarationContainerLoweringPass {
     private lateinit var function: IrFunction
     private var tmpVarCounter: Int = 0
 
@@ -44,12 +41,52 @@
     private val unreachableFunction =
         JsSymbolBuilder.buildSimpleFunction(context.module, Namer.UNREACHABLE_NAME).initialize(type = nothingType)
 
-    override fun lower(irFunction: IrFunction) {
+    override fun lower(irDeclarationContainer: IrDeclarationContainer) {
+        irDeclarationContainer.declarations.transformFlat { declaration ->
+            when (declaration) {
+                is IrFunction -> {
+                    lower(declaration)
+                    listOf(declaration)
+                }
+                is IrField -> lower(declaration, irDeclarationContainer)
+                else -> listOf(declaration)
+            }
+        }
+    }
+
+    fun lower(irFunction: IrFunction) {
         function = irFunction
         tmpVarCounter = 0
         irFunction.body?.accept(statementVisitor, null)
     }
 
+    fun lower(irField: IrField, container: IrDeclarationContainer): List<IrDeclaration> {
+        irField.initializer?.apply {
+            val initFnSymbol = JsSymbolBuilder.buildSimpleFunction(
+                (container as IrSymbolOwner).symbol.descriptor,
+                irField.name.asString() + "\$init\$"
+            ).initialize(type = expression.type)
+
+
+            val newBody = IrBlockBodyImpl(expression.startOffset, expression.endOffset).apply {
+                statements += JsIrBuilder.buildReturn(initFnSymbol, expression)
+            }
+
+            val initFn = JsIrBuilder.buildFunction(initFnSymbol).apply {
+                body = newBody
+            }
+
+            lower(initFn)
+
+            if (newBody.statements.size > 1) {
+                expression = JsIrBuilder.buildCall(initFnSymbol)
+                return listOf(initFn, irField)
+            }
+        }
+
+        return listOf(irField)
+    }
+
     enum class VisitStatus {
         DECOMPOSED,
         TERMINATED,
diff --git a/compiler/testData/codegen/box/functions/kt395.kt b/compiler/testData/codegen/box/functions/kt395.kt
index 1355aa5..3106402 100644
--- a/compiler/testData/codegen/box/functions/kt395.kt
+++ b/compiler/testData/codegen/box/functions/kt395.kt
@@ -1,4 +1,3 @@
-// IGNORE_BACKEND: JS_IR
 fun Any.with(operation :  Any.() -> Any) = operation().toString()
 
 val f = { a : Int -> }
diff --git a/compiler/testData/codegen/box/objects/anonymousObjectPropertyInitialization.kt b/compiler/testData/codegen/box/objects/anonymousObjectPropertyInitialization.kt
index 972c35b..4765e88 100644
--- a/compiler/testData/codegen/box/objects/anonymousObjectPropertyInitialization.kt
+++ b/compiler/testData/codegen/box/objects/anonymousObjectPropertyInitialization.kt
@@ -1,4 +1,3 @@
-// IGNORE_BACKEND: JS_IR
 interface T {
     fun foo(): String
 }
diff --git a/compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt b/compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt
index e1ecc61..ba3a87a 100644
--- a/compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt
+++ b/compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt
@@ -1,4 +1,3 @@
-// IGNORE_BACKEND: JS_IR
 open class Foo<T>(val x: T)
 
 typealias FooStr = Foo<String>
diff --git a/js/js.translator/testData/box/expression/misc/temporaryVariableCreatedInPackageInitializer.kt b/js/js.translator/testData/box/expression/misc/temporaryVariableCreatedInPackageInitializer.kt
index 0845dd1..ab88842 100644
--- a/js/js.translator/testData/box/expression/misc/temporaryVariableCreatedInPackageInitializer.kt
+++ b/js/js.translator/testData/box/expression/misc/temporaryVariableCreatedInPackageInitializer.kt
@@ -1,4 +1,3 @@
-// IGNORE_BACKEND: JS_IR
 // EXPECTED_REACHABLE_NODES: 1111
 package foo
 
