JS backend: remove wrong usages program().getStringLiteral(). Use context().getNameForDescriptor()

This commit is contained in:
Erokhin Stanislav
2013-09-28 11:51:58 +04:00
parent 71cfa86f19
commit 8e940244af
7 changed files with 17 additions and 44 deletions
@@ -20,11 +20,9 @@ import com.google.dart.compiler.backend.js.ast.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.Named;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.plugin.JetLanguage;
import org.jetbrains.jet.lang.resolve.name.Name;
/**
* Encapuslates different types of constants and naming conventions.
@@ -56,14 +54,6 @@ public final class Namer {
private static final String DELEGATE_POSTFIX = "$delegate";
private static final String PROPERTY_METADATA = "PropertyMetadata";
private static final Named CLASS_OBJECT_INITIALIZER_NAMED = new Named() {
@NotNull
@Override
public Name getName() {
return Name.identifier(CLASS_OBJECT_INITIALIZER);
}
};
@NotNull
public static String getReceiverParameterName() {
return RECEIVER_PARAMETER_NAME;
@@ -119,8 +109,8 @@ public final class Namer {
}
@NotNull
public static Named getNamedForClassObjectInitializer() {
return CLASS_OBJECT_INITIALIZER_NAMED;
public static String getNameForClassObjectInitializer() {
return CLASS_OBJECT_INITIALIZER;
}
@NotNull
@@ -22,7 +22,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.Named;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.k2js.translate.declaration.ClassDeclarationTranslator;
@@ -177,11 +176,6 @@ public class TranslationContext {
return staticContext.declarePropertyOrPropertyAccessorName(descriptor, name, fresh);
}
@NotNull
public JsStringLiteral nameToLiteral(@NotNull Named named) {
return program().getStringLiteral(named.getName().asString());
}
@NotNull
public JsNameRef getQualifiedReference(@NotNull DeclarationDescriptor descriptor) {
return staticContext.getQualifiedReference(descriptor);
@@ -33,7 +33,6 @@ import org.jetbrains.jet.utils.DFS;
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.initializer.InitializerUtils;
import java.util.Collection;
import java.util.Iterator;
@@ -256,6 +255,6 @@ public final class ClassDeclarationTranslator extends AbstractTranslator {
}
}
return InitializerUtils.createPropertyInitializer(descriptor, value, context());
return new JsPropertyInitializer(context.getNameForDescriptor(descriptor).makeRef(), value);
}
}
@@ -31,7 +31,6 @@ import org.jetbrains.jet.lang.psi.JetParameter;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeConstructor;
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.initializer.ClassInitializerTranslator;
@@ -42,7 +41,7 @@ import java.util.*;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.*;
import static org.jetbrains.jet.lang.types.TypeUtils.topologicallySortSuperclassesAndRecordAllInstances;
import static org.jetbrains.k2js.translate.expression.LiteralFunctionTranslator.createPlace;
import static org.jetbrains.k2js.translate.initializer.InitializerUtils.createPropertyInitializer;
import static org.jetbrains.k2js.translate.initializer.InitializerUtils.createClassObjectInitializer;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getClassDescriptor;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getPropertyDescriptorForConstructorParameter;
import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.getContainingClass;
@@ -213,7 +212,7 @@ public final class ClassTranslator extends AbstractTranslator {
invocation.getArguments().add(new JsObjectLiteral(enumEntryList, true));
JsFunction fun = simpleReturnFunction(declarationContext.getScopeForDescriptor(descriptor), invocation);
staticProperties.add(createPropertyInitializer(Namer.getNamedForClassObjectInitializer(), fun, declarationContext));
staticProperties.add(createClassObjectInitializer(fun, declarationContext));
} else {
assert enumEntryList.isEmpty(): "Only enum class may have enum entry. Class kind is: " + descriptor.getKind();
}
@@ -21,11 +21,12 @@ import com.google.dart.compiler.backend.js.ast.JsFunction;
import com.google.dart.compiler.backend.js.ast.JsPropertyInitializer;
import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.Modality;
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.k2js.translate.context.Namer;
import org.jetbrains.k2js.translate.context.TranslationContext;
import org.jetbrains.k2js.translate.general.Translation;
import org.jetbrains.k2js.translate.general.TranslatorVisitor;
@@ -36,7 +37,7 @@ import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.Collection;
import java.util.List;
import static org.jetbrains.k2js.translate.initializer.InitializerUtils.createPropertyInitializer;
import static org.jetbrains.k2js.translate.initializer.InitializerUtils.createClassObjectInitializer;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getClassDescriptor;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getFunctionDescriptor;
@@ -69,9 +70,7 @@ public class DeclarationBodyVisitor extends TranslatorVisitor<Void> {
}
@Override
public Void visitEnumEntry(
@NotNull final JetEnumEntry enumEntry, TranslationContext data
) {
public Void visitEnumEntry(@NotNull JetEnumEntry enumEntry, TranslationContext data) {
JsExpression jsEnumEntryCreation;
ClassDescriptor descriptor = getClassDescriptor(data.bindingContext(), enumEntry);
Collection<JetType> supertypes = descriptor.getTypeConstructor().getSupertypes();
@@ -81,16 +80,7 @@ public class DeclarationBodyVisitor extends TranslatorVisitor<Void> {
assert supertypes.size() == 1 : "Simple Enum entry must have one supertype";
jsEnumEntryCreation = new ClassInitializerTranslator(enumEntry, data).generateEnumEntryInstanceCreation(supertypes.iterator().next());
}
Named named = new Named() {
@NotNull
@Override
public Name getName() {
String name = enumEntry.getName();
assert name != null : "Enum entry name must be not null";
return Name.identifier(name);
}
};
enumEntryList.add(new JsPropertyInitializer(data.nameToLiteral(named), jsEnumEntryCreation));
enumEntryList.add(new JsPropertyInitializer(data.getNameForDescriptor(descriptor).makeRef(), jsEnumEntryCreation));
return null;
}
@@ -104,7 +94,7 @@ public class DeclarationBodyVisitor extends TranslatorVisitor<Void> {
JsExpression value = ClassTranslator.generateClassCreation(declaration, descriptor, context);
JsFunction fun = TranslationUtils.simpleReturnFunction(context.getScopeForDescriptor(descriptor), value);
staticResult.add(createPropertyInitializer(Namer.getNamedForClassObjectInitializer(), fun, context));
staticResult.add(createClassObjectInitializer(fun, context));
return null;
}
@@ -74,7 +74,7 @@ public final class PropertyTranslator extends AbstractTranslator {
List<JsPropertyInitializer> to;
if (!JsDescriptorUtils.isExtension(descriptor)) {
to = new SmartList<JsPropertyInitializer>();
result.add(new JsPropertyInitializer(context().nameToLiteral(descriptor), new JsObjectLiteral(to, true)));
result.add(new JsPropertyInitializer(context().getNameForDescriptor(descriptor).makeRef(), new JsObjectLiteral(to, true)));
}
else {
to = result;
@@ -69,7 +69,8 @@ public final class InitializerUtils {
initializers.add(expression.makeStmt());
}
public static JsPropertyInitializer createPropertyInitializer(Named named, JsExpression value, TranslationContext context) {
return new JsPropertyInitializer(context.nameToLiteral(named), value);
public static JsPropertyInitializer createClassObjectInitializer(JsExpression value, TranslationContext context) {
JsStringLiteral classObjectInitStr = context.program().getStringLiteral(Namer.getNameForClassObjectInitializer());
return new JsPropertyInitializer(classObjectInitStr, value);
}
}