From fc559ab0cd1fa275c30923c4bdb5b1d33ccb3488 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 2 Mar 2021 16:16:52 +0300 Subject: [PATCH] [JS IR] Unite varargs and non varargs before vararg --- .../backend/js/transformers/irToJs/jsAstUtils.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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()),