JS backend: move "call" and "baseInitializer" keyword to Namer
This commit is contained in:
@@ -36,6 +36,7 @@ public final class Namer {
|
||||
public static final String CALLEE_NAME = "$fun";
|
||||
public static final String OUTER_CLASS_NAME = "$outer";
|
||||
|
||||
private static final String CALL_FUNCTION = "call";
|
||||
private static final String INITIALIZE_METHOD_NAME = "initialize";
|
||||
private static final String CLASS_OBJECT_NAME = "createClass";
|
||||
private static final String TRAIT_OBJECT_NAME = "createTrait";
|
||||
@@ -44,7 +45,7 @@ public final class Namer {
|
||||
private static final String SETTER_PREFIX = "set_";
|
||||
private static final String GETTER_PREFIX = "get_";
|
||||
private static final String BACKING_FIELD_PREFIX = "$";
|
||||
private static final String SUPER_METHOD_NAME = "super_init";
|
||||
private static final String SUPER_METHOD_NAME = "baseInitializer";
|
||||
private static final String ROOT_NAMESPACE = "_";
|
||||
private static final String RECEIVER_PARAMETER_NAME = "$receiver";
|
||||
private static final String CLASSES_OBJECT_NAME = "_c";
|
||||
@@ -80,8 +81,8 @@ public final class Namer {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String superMethodName() {
|
||||
return SUPER_METHOD_NAME;
|
||||
public static JsNameRef superMethodNameRef(@NotNull JsName superClassJsName) {
|
||||
return new JsNameRef(SUPER_METHOD_NAME, superClassJsName.makeRef());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -143,6 +144,11 @@ public final class Namer {
|
||||
return prefix + name;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef getFunctionCallRef(@NotNull JsExpression functionExpression) {
|
||||
return new JsNameRef(CALL_FUNCTION, functionExpression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Namer newInstance(@NotNull JsScope rootScope) {
|
||||
return new Namer(rootScope);
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.k2js.translate.LabelGenerator;
|
||||
import org.jetbrains.k2js.translate.context.Namer;
|
||||
import org.jetbrains.k2js.translate.context.TranslationContext;
|
||||
import org.jetbrains.k2js.translate.general.AbstractTranslator;
|
||||
import org.jetbrains.k2js.translate.general.Translation;
|
||||
@@ -104,7 +105,7 @@ final class NamespaceTranslator extends AbstractTranslator {
|
||||
else {
|
||||
initializer = visitor.initializer;
|
||||
if (!context().isEcma5()) {
|
||||
initializers.add(new JsInvocation(new JsNameRef("call", initializer),
|
||||
initializers.add(new JsInvocation(Namer.getFunctionCallRef(initializer),
|
||||
context().getQualifiedReference(descriptor)).makeStmt());
|
||||
}
|
||||
}
|
||||
|
||||
+6
-13
@@ -39,7 +39,6 @@ import java.util.List;
|
||||
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassDescriptorForType;
|
||||
import static org.jetbrains.k2js.translate.utils.BindingUtils.*;
|
||||
import static org.jetbrains.k2js.translate.utils.JsAstUtils.convertToStatement;
|
||||
import static org.jetbrains.k2js.translate.utils.PsiUtils.getPrimaryConstructorParameters;
|
||||
import static org.jetbrains.k2js.translate.utils.TranslationUtils.translateArgumentList;
|
||||
|
||||
@@ -107,18 +106,12 @@ public final class ClassInitializerTranslator extends AbstractTranslator {
|
||||
}
|
||||
|
||||
private void addCallToSuperMethod(@NotNull List<JsExpression> arguments, JsFunction initializer) {
|
||||
if (context().isEcma5()) {
|
||||
JsName ref = context().scope().declareName(Namer.CALLEE_NAME);
|
||||
initializer.setName(ref);
|
||||
JsInvocation call = new JsInvocation(new JsNameRef("call", new JsNameRef("baseInitializer", ref.makeRef())));
|
||||
call.getArguments().add(JsLiteral.THIS);
|
||||
call.getArguments().addAll(arguments);
|
||||
initializerStatements.add(call.makeStmt());
|
||||
}
|
||||
else {
|
||||
JsName superMethodName = context().scope().declareName(Namer.superMethodName());
|
||||
initializerStatements.add(convertToStatement(new JsInvocation(new JsNameRef(superMethodName, JsLiteral.THIS), arguments)));
|
||||
}
|
||||
JsName ref = context().scope().declareName(Namer.CALLEE_NAME);
|
||||
initializer.setName(ref);
|
||||
JsInvocation call = new JsInvocation(Namer.getFunctionCallRef(Namer.superMethodNameRef(ref)));
|
||||
call.getArguments().add(JsLiteral.THIS);
|
||||
call.getArguments().addAll(arguments);
|
||||
initializerStatements.add(call.makeStmt());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+2
-1
@@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.lang.types.lang.PrimitiveType;
|
||||
import org.jetbrains.k2js.translate.context.Namer;
|
||||
import org.jetbrains.k2js.translate.context.TranslationContext;
|
||||
import org.jetbrains.k2js.translate.intrinsic.functions.basic.FunctionIntrinsic;
|
||||
import org.jetbrains.k2js.translate.intrinsic.functions.patterns.DescriptorPredicate;
|
||||
@@ -169,7 +170,7 @@ public final class TopLevelFIF extends CompositeFIF {
|
||||
if (functionReference instanceof JsNameRef && ((JsNameRef) functionReference).getIdent().equals("invoke")) {
|
||||
return callTranslator.explicitInvokeCall();
|
||||
}
|
||||
return new JsInvocation(new JsNameRef("call", functionReference), generateInvocationArguments(thisExpression, arguments));
|
||||
return new JsInvocation(Namer.getFunctionCallRef(functionReference), generateInvocationArguments(thisExpression, arguments));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user