From 8e940244af4555f06fee85ce3f08e0f640dbb74e Mon Sep 17 00:00:00 2001 From: Erokhin Stanislav Date: Sat, 28 Sep 2013 11:51:58 +0400 Subject: [PATCH] JS backend: remove wrong usages program().getStringLiteral(). Use context().getNameForDescriptor() --- .../k2js/translate/context/Namer.java | 14 ++-------- .../translate/context/TranslationContext.java | 6 ----- .../ClassDeclarationTranslator.java | 3 +-- .../declaration/ClassTranslator.java | 5 ++-- .../declaration/DeclarationBodyVisitor.java | 26 ++++++------------- .../declaration/PropertyTranslator.java | 2 +- .../initializer/InitializerUtils.java | 5 ++-- 7 files changed, 17 insertions(+), 44 deletions(-) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/context/Namer.java b/js/js.translator/src/org/jetbrains/k2js/translate/context/Namer.java index 7fc1b6483a3..dce79f3bfcb 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/context/Namer.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/context/Namer.java @@ -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 diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java b/js/js.translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java index a1901801543..7c1778a95b7 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java @@ -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); diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java index c79e8d9ec00..76da1dd74ea 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java @@ -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); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java index 7f9986eaded..a8cfd323590 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java @@ -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(); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java index 28703d43ff8..21a9064eec6 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java @@ -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 { } @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 supertypes = descriptor.getTypeConstructor().getSupertypes(); @@ -81,16 +80,7 @@ public class DeclarationBodyVisitor extends TranslatorVisitor { 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 { 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; } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java index 13300a58be3..b1a8eca7684 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java @@ -74,7 +74,7 @@ public final class PropertyTranslator extends AbstractTranslator { List to; if (!JsDescriptorUtils.isExtension(descriptor)) { to = new SmartList(); - 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; diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/initializer/InitializerUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/initializer/InitializerUtils.java index abe54a12b13..ce70c80f232 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/initializer/InitializerUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/initializer/InitializerUtils.java @@ -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); } } \ No newline at end of file