001 package org.jetbrains.k2js.translate.intrinsic.functions.factories;
002
003 import com.google.dart.compiler.backend.js.ast.JsExpression;
004 import com.google.dart.compiler.backend.js.ast.JsInvocation;
005 import com.google.dart.compiler.backend.js.ast.JsNameRef;
006 import org.jetbrains.annotations.NotNull;
007 import org.jetbrains.annotations.Nullable;
008 import org.jetbrains.k2js.translate.context.Namer;
009 import org.jetbrains.k2js.translate.context.TranslationContext;
010 import org.jetbrains.k2js.translate.intrinsic.functions.basic.FunctionIntrinsic;
011 import org.jetbrains.k2js.translate.utils.TranslationUtils;
012
013 import java.util.List;
014
015 public final class KotlinFunctionIntrinsic extends FunctionIntrinsic {
016 @NotNull
017 private final JsNameRef function;
018
019 public KotlinFunctionIntrinsic(@NotNull String functionName) {
020 function = new JsNameRef(functionName, Namer.KOTLIN_NAME);
021 }
022
023 @NotNull
024 @Override
025 public JsExpression apply(
026 @Nullable JsExpression receiver,
027 @NotNull List<JsExpression> arguments,
028 @NotNull TranslationContext context
029 ) {
030 return new JsInvocation(function, receiver == null ? arguments : TranslationUtils.generateInvocationArguments(receiver, arguments));
031 }
032 }