JS backend: remove all usages TranslationContext.isEcma5()

This commit is contained in:
Erokhin Stanislav
2013-09-06 09:42:03 +04:00
parent 79904a9b96
commit eed1a6506e
5 changed files with 8 additions and 40 deletions
@@ -58,10 +58,6 @@ public class TranslationContext {
private final HashMap<JsExpression, TemporaryConstVariable> expressionToTempConstVariableCache = new HashMap<JsExpression, TemporaryConstVariable>(); private final HashMap<JsExpression, TemporaryConstVariable> expressionToTempConstVariableCache = new HashMap<JsExpression, TemporaryConstVariable>();
public boolean isEcma5() {
return staticContext.isEcma5();
}
private TranslationContext( private TranslationContext(
@NotNull StaticContext staticContext, @NotNull StaticContext staticContext,
@NotNull DynamicContext dynamicContext, @NotNull DynamicContext dynamicContext,
@@ -173,12 +173,7 @@ public final class ClassTranslator extends AbstractTranslator {
if (!isTrait()) { if (!isTrait()) {
JsFunction initializer = new ClassInitializerTranslator(classDeclaration, declarationContext).generateInitializeMethod(); JsFunction initializer = new ClassInitializerTranslator(classDeclaration, declarationContext).generateInitializeMethod();
if (context().isEcma5()) { invocationArguments.add(initializer.getBody().getStatements().isEmpty() ? JsLiteral.NULL : initializer);
invocationArguments.add(initializer.getBody().getStatements().isEmpty() ? JsLiteral.NULL : initializer);
}
else {
properties.add(new JsPropertyInitializer(Namer.initializeMethodReference(), initializer));
}
} }
translatePropertiesAsConstructorParameters(declarationContext, properties); translatePropertiesAsConstructorParameters(declarationContext, properties);
@@ -227,9 +222,7 @@ public final class ClassTranslator extends AbstractTranslator {
private void addSuperclassReferences(@NotNull JsInvocation jsClassDeclaration) { private void addSuperclassReferences(@NotNull JsInvocation jsClassDeclaration) {
List<JsExpression> superClassReferences = getSupertypesNameReferences(); List<JsExpression> superClassReferences = getSupertypesNameReferences();
if (superClassReferences.isEmpty()) { if (superClassReferences.isEmpty()) {
if (!isTrait() || context().isEcma5()) { jsClassDeclaration.getArguments().add(JsLiteral.NULL);
jsClassDeclaration.getArguments().add(JsLiteral.NULL);
}
return; return;
} }
@@ -72,24 +72,16 @@ public final class NamespaceDeclarationTranslator extends AbstractTranslator {
return Collections.emptyList(); return Collections.emptyList();
} }
JsVars vars = new JsVars(true);
List<JsStatement> result;
if (context().isEcma5()) {
result = Collections.<JsStatement>singletonList(vars);
}
else {
result = new ArrayList<JsStatement>();
result.add(vars);
}
context().classDeclarationTranslator().generateDeclarations(); context().classDeclarationTranslator().generateDeclarations();
for (NamespaceTranslator translator : descriptorToTranslator.values()) { for (NamespaceTranslator translator : descriptorToTranslator.values()) {
translator.add(descriptorToDefineInvocation, result); translator.add(descriptorToDefineInvocation);
} }
JsVars vars = new JsVars(true);
vars.addIfHasInitializer(context().classDeclarationTranslator().getDeclaration()); vars.addIfHasInitializer(context().classDeclarationTranslator().getDeclaration());
vars.addIfHasInitializer(getRootPackageDeclaration(descriptorToDefineInvocation.get(rootNamespaceDescriptor))); vars.addIfHasInitializer(getRootPackageDeclaration(descriptorToDefineInvocation.get(rootNamespaceDescriptor)));
return result;
return Collections.<JsStatement>singletonList(vars);
} }
@NotNull @NotNull
@@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.k2js.translate.LabelGenerator; 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.context.TranslationContext;
import org.jetbrains.k2js.translate.general.AbstractTranslator; import org.jetbrains.k2js.translate.general.AbstractTranslator;
import org.jetbrains.k2js.translate.general.Translation; import org.jetbrains.k2js.translate.general.Translation;
@@ -98,18 +97,13 @@ final class NamespaceTranslator extends AbstractTranslator {
return place; return place;
} }
public void add(@NotNull Map<NamespaceDescriptor, DefineInvocation> descriptorToDefineInvocation, public void add(@NotNull Map<NamespaceDescriptor, DefineInvocation> descriptorToDefineInvocation) {
@NotNull List<JsStatement> initializers) {
JsExpression initializer; JsExpression initializer;
if (visitor.initializerStatements.isEmpty()) { if (visitor.initializerStatements.isEmpty()) {
initializer = null; initializer = null;
} }
else { else {
initializer = visitor.initializer; initializer = visitor.initializer;
if (!context().isEcma5()) {
initializers.add(new JsInvocation(Namer.getFunctionCallRef(initializer),
context().getQualifiedReference(descriptor)).makeStmt());
}
} }
DefineInvocation defineInvocation = descriptorToDefineInvocation.get(descriptor); DefineInvocation defineInvocation = descriptorToDefineInvocation.get(descriptor);
@@ -36,7 +36,6 @@ import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.List; import java.util.List;
import static org.jetbrains.k2js.translate.reference.CallParametersResolver.resolveCallParameters; import static org.jetbrains.k2js.translate.reference.CallParametersResolver.resolveCallParameters;
import static org.jetbrains.k2js.translate.utils.BindingUtils.isObjectDeclaration;
import static org.jetbrains.k2js.translate.utils.JsAstUtils.assignment; import static org.jetbrains.k2js.translate.utils.JsAstUtils.assignment;
import static org.jetbrains.k2js.translate.utils.JsAstUtils.setQualifier; import static org.jetbrains.k2js.translate.utils.JsAstUtils.setQualifier;
import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.isConstructorDescriptor; import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.isConstructorDescriptor;
@@ -206,13 +205,7 @@ public final class CallTranslator extends AbstractTranslator {
} }
private boolean isDirectPropertyAccess() { private boolean isDirectPropertyAccess() {
return descriptor instanceof PropertyAccessorDescriptor && return descriptor instanceof PropertyAccessorDescriptor;
(context().isEcma5() || isObjectAccessor((PropertyAccessorDescriptor) descriptor));
}
private boolean isObjectAccessor(@NotNull PropertyAccessorDescriptor propertyAccessorDescriptor) {
PropertyDescriptor correspondingProperty = propertyAccessorDescriptor.getCorrespondingProperty();
return isObjectDeclaration(correspondingProperty);
} }
@NotNull @NotNull