diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsCode.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsCode.kt index 9ab7643dff1..c88a3288e4e 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsCode.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsCode.kt @@ -8,9 +8,8 @@ package org.jetbrains.kotlin.ir.backend.js.transformers.irToJs import com.google.gwt.dev.js.ThrowExceptionOnErrorReporter import com.google.gwt.dev.js.rhino.CodePosition import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.expressions.IrConst -import org.jetbrains.kotlin.ir.expressions.IrExpression -import org.jetbrains.kotlin.ir.expressions.IrStringConcatenation +import org.jetbrains.kotlin.ir.declarations.IrVariable +import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid @@ -32,6 +31,31 @@ fun translateJsCodeIntoStatementList(code: IrExpression): List? { foldingFailed = true } + override fun visitGetValue(expression: IrGetValue) { + expression.symbol.owner.acceptVoid(this) + } + + override fun visitVariable(declaration: IrVariable) { + declaration.initializer?.let { + it.acceptVoid(this) + return + } + + super.visitVariable(declaration) + } + + override fun visitGetField(expression: IrGetField) { + expression.symbol.owner.initializer?.expression?.acceptVoid(this) + } + + override fun visitCall(expression: IrCall) { + if (expression.origin != IrStatementOrigin.PLUS) { + return super.visitCall(expression) + } + + expression.acceptChildrenVoid(this) + } + override fun visitConst(expression: IrConst) { builder.append(expression.kind.valueOf(expression)) }