diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrElementToJsExpressionTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrElementToJsExpressionTransformer.kt index f8a1a248ada..66141eace4f 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrElementToJsExpressionTransformer.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrElementToJsExpressionTransformer.kt @@ -9,10 +9,7 @@ import org.jetbrains.kotlin.ir.backend.js.utils.isPrimary import org.jetbrains.kotlin.ir.backend.js.utils.parameterCount import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction -import org.jetbrains.kotlin.ir.expressions.IrCall -import org.jetbrains.kotlin.ir.expressions.IrConst -import org.jetbrains.kotlin.ir.expressions.IrConstKind -import org.jetbrains.kotlin.ir.expressions.IrExpressionBody +import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol import org.jetbrains.kotlin.js.backend.ast.* @@ -73,4 +70,9 @@ class IrElementToJsExpressionTransformer : BaseIrElementToJsNodeTransformer IrWhen.toJsNode(tr: BaseIrElementToJsNodeTransformer, data: D, node: (JsExpression, T, T?) -> T): T? = + branches.foldRight(null) { br, n -> + val body = br.result.accept(tr, data) + if (br is IrElseBranch) body + else { + val condition = br.condition.accept(IrElementToJsExpressionTransformer(), data) + node(condition, body, n) + } + } \ No newline at end of file