From bcfc0c21b1fbc097cfdf6b2cd8d4a8d6aa7f5c03 Mon Sep 17 00:00:00 2001 From: Shagen Ogandzhanian Date: Fri, 8 Jan 2021 17:47:04 +0100 Subject: [PATCH] Don't add to the concatenation chain empty arraysForConcat at all ^KT-40689 fixed --- .../ir/backend/js/transformers/irToJs/jsAstUtils.kt | 12 ++++++------ 1 file changed, 6 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 9ac5225fc3a..fae36a97a9e 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 @@ -220,7 +220,9 @@ fun argumentsWithVarargAsSingleArray( // Call `Array.prototype.slice` on vararg arguments in order to convert array-like objects into proper arrays varargParameterIndex -> { - concatElements.add(JsArrayLiteral(arraysForConcat)) + if (arraysForConcat.isNotEmpty()) { + concatElements.add(JsArrayLiteral(arraysForConcat)) + } arraysForConcat = mutableListOf() val varargArgument = when (argument) { @@ -242,12 +244,10 @@ fun argumentsWithVarargAsSingleArray( concatElements.add(JsArrayLiteral(arraysForConcat)) } - val concatElementsResolved = concatElements.dropWhile { (it is JsArrayLiteral) && (it.expressions.isEmpty()) } - - return concatElementsResolved.singleOrNull() + return concatElements.singleOrNull() ?: JsInvocation( - JsNameRef("concat", concatElementsResolved.first()), - concatElementsResolved.drop(1) + JsNameRef("concat", concatElements.first()), + concatElements.drop(1) ) }