KJS: make deep copy of additional arguments before expose them in KotlinFunctionIntrinsic
This commit is contained in:
+8
-4
@@ -16,17 +16,17 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.js.translate.intrinsic.functions.factories;
|
package org.jetbrains.kotlin.js.translate.intrinsic.functions.factories;
|
||||||
|
|
||||||
import kotlin.collections.CollectionsKt;
|
|
||||||
import org.jetbrains.kotlin.js.backend.ast.JsExpression;
|
|
||||||
import org.jetbrains.kotlin.js.backend.ast.JsInvocation;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.kotlin.js.backend.ast.JsExpression;
|
||||||
|
import org.jetbrains.kotlin.js.backend.ast.JsInvocation;
|
||||||
import org.jetbrains.kotlin.js.translate.context.Namer;
|
import org.jetbrains.kotlin.js.translate.context.Namer;
|
||||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
||||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic;
|
import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic;
|
||||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
|
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
|
||||||
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils;
|
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class KotlinFunctionIntrinsic extends FunctionIntrinsic {
|
public class KotlinFunctionIntrinsic extends FunctionIntrinsic {
|
||||||
@@ -48,7 +48,11 @@ public class KotlinFunctionIntrinsic extends FunctionIntrinsic {
|
|||||||
) {
|
) {
|
||||||
JsExpression function = JsAstUtils.pureFqn(functionName, Namer.kotlinObject());
|
JsExpression function = JsAstUtils.pureFqn(functionName, Namer.kotlinObject());
|
||||||
if (additionalArguments.length > 0) {
|
if (additionalArguments.length > 0) {
|
||||||
arguments = CollectionsKt.plus(arguments, additionalArguments);
|
List<JsExpression> newArguments = new ArrayList<JsExpression>(arguments);
|
||||||
|
for (JsExpression e : additionalArguments) {
|
||||||
|
newArguments.add(e.deepCopy());
|
||||||
|
}
|
||||||
|
arguments = newArguments;
|
||||||
}
|
}
|
||||||
return new JsInvocation(function, receiver == null ? arguments : TranslationUtils.generateInvocationArguments(receiver, arguments));
|
return new JsInvocation(function, receiver == null ? arguments : TranslationUtils.generateInvocationArguments(receiver, arguments));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user