diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt index f7c100e0aa1..f421d6d4cdf 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt @@ -258,8 +258,21 @@ fun argumentsWithVarargAsSingleArray( concatElements.add(JsArrayLiteral(arraysForConcat)) } + if (concatElements.isEmpty()) { + return JsArrayLiteral() + } + + if (concatElements.all { it is JsArrayLiteral }) { + return concatElements + .fold(mutableListOf()) { aggregatedArrayExpressions, arrayLiteral -> + arrayLiteral as JsArrayLiteral + aggregatedArrayExpressions.addAll(arrayLiteral.expressions) + aggregatedArrayExpressions + } + .let { JsArrayLiteral(it) } + } + return when (concatElements.size) { - 0 -> JsArrayLiteral() 1 -> concatElements[0] else -> JsInvocation( JsNameRef("concat", concatElements.first()),