diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrDeclarationToJsTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrDeclarationToJsTransformer.kt index 882884e8a24..d68813f6590 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrDeclarationToJsTransformer.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrDeclarationToJsTransformer.kt @@ -30,7 +30,7 @@ class IrDeclarationToJsTransformer : BaseIrElementToJsNodeTransformer): List { + val statements = mutableListOf() val visited = mutableSetOf() - for (name in staticContext.classModels.keys) { - addPostDeclaration(name, visited, block.statements, staticContext.classModels) + for (name in classModels.keys) { + addPostDeclaration(name, visited, statements, classModels) } + + return statements } private fun addPostDeclaration(name: JsName, visited: MutableSet, statements: MutableList, classModels: Map) { diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsClassGenerator.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsClassGenerator.kt index 851b720836b..bf9a0895711 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsClassGenerator.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsClassGenerator.kt @@ -29,7 +29,7 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo private val baseClass = irClass.superClasses.firstOrNull { !it.owner.isInterface } private val baseClassName = baseClass?.let { context.getNameForSymbol(it) } private val classPrototypeRef = prototypeOf(classNameRef) - private val classBlock = JsBlock() + private val classBlock = JsGlobalBlock() private val classModel = JsClassModel(className, baseClassName) fun generate(): JsStatement { @@ -73,7 +73,7 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo val memberName = context.getNameForSymbol(declaration.symbol) val memberRef = JsNameRef(memberName, classPrototypeRef) - translatedFunction?.let { return jsAssignment(memberRef, it).makeStmt() } + translatedFunction?.let { return jsAssignment(memberRef, it.apply { name = null }).makeStmt() } // do not generate code like // interface I { foo() = "OK" } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/JsGenerationContext.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/JsGenerationContext.kt index 5a31f4906a2..cd3733359d4 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/JsGenerationContext.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/JsGenerationContext.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.js.backend.ast.* class JsGenerationContext { fun newDeclaration(scope: JsScope, func: IrFunction? = null): JsGenerationContext { - return JsGenerationContext(this, JsBlock(), scope, func) + return JsGenerationContext(this, if (func != null) JsBlock() else JsGlobalBlock(), scope, func) } val currentBlock: JsBlock