From c996161db0445d381f87077a03a70fcd5326a977 Mon Sep 17 00:00:00 2001 From: Shagen Ogandzhanian Date: Fri, 8 Jan 2021 03:12:06 +0100 Subject: [PATCH] Unroll any constructor call if argument is JsArrayLiteral ^KT-40689 fixed --- .../ir/backend/js/transformers/irToJs/jsAstUtils.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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 20b033e5f34..d410f230b7e 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 @@ -223,12 +223,11 @@ fun argumentsWithVarargAsSingleArray( concatElements.add(JsArrayLiteral(arraysForConcat)) arraysForConcat = mutableListOf() - val varargArgument = if (argument is JsArrayLiteral) { - argument - } else { - val arraySliceCall = JsNameRef("call", JsNameRef("slice", JsArrayLiteral())) - JsInvocation(arraySliceCall, argument) - } + val varargArgument = when (argument) { + is JsArrayLiteral -> argument + is JsNew -> argument.arguments.firstOrNull() as? JsArrayLiteral + else -> null + } ?: JsInvocation(JsNameRef("call", JsNameRef("slice", JsArrayLiteral())), argument) concatElements.add(varargArgument) }