JS backend: remove wrong usages program().getStringLiteral(). Use context().getNameForDescriptor()
This commit is contained in:
@@ -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);
|
||||
|
||||
+1
-2
@@ -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();
|
||||
}
|
||||
|
||||
+8
-18
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user