Rename JsAstUtils.fqn to fqnWithoutSideEffects. Move PropertyTranslator to appropriate package

This commit is contained in:
Alexey Andreev
2016-04-04 13:17:13 +03:00
parent 0caff1e504
commit b3698b1177
13 changed files with 47 additions and 41 deletions
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.js.translate.operation.OperatorTable
import org.jetbrains.kotlin.js.translate.reference.CallArgumentTranslator import org.jetbrains.kotlin.js.translate.reference.CallArgumentTranslator
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils import org.jetbrains.kotlin.js.translate.utils.JsAstUtils
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects
import org.jetbrains.kotlin.js.translate.utils.PsiUtils import org.jetbrains.kotlin.js.translate.utils.PsiUtils
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
@@ -60,7 +61,7 @@ object DefaultFunctionCallCase : FunctionCallCase() {
if (isNative && hasSpreadOperator) { if (isNative && hasSpreadOperator) {
return nativeSpreadFunWithDispatchOrExtensionReceiver(argumentsInfo, functionName) return nativeSpreadFunWithDispatchOrExtensionReceiver(argumentsInfo, functionName)
} }
return JsInvocation(JsAstUtils.fqn(functionName, dispatchReceiver), argumentsInfo.translateArguments) return JsInvocation(fqnWithoutSideEffects(functionName, dispatchReceiver), argumentsInfo.translateArguments)
} }
fun buildDefaultCallWithoutReceiver(context: TranslationContext, fun buildDefaultCallWithoutReceiver(context: TranslationContext,
@@ -79,7 +80,7 @@ object DefaultFunctionCallCase : FunctionCallCase() {
val functionRef = context.aliasOrValue(callableDescriptor) { val functionRef = context.aliasOrValue(callableDescriptor) {
val qualifierForFunction = context.getQualifierForDescriptor(it) val qualifierForFunction = context.getQualifierForDescriptor(it)
JsAstUtils.fqn(functionName, qualifierForFunction) fqnWithoutSideEffects(functionName, qualifierForFunction)
} }
return JsInvocation(functionRef, argumentsInfo.translateArguments) return JsInvocation(functionRef, argumentsInfo.translateArguments)
} }
@@ -102,7 +103,7 @@ object DefaultFunctionCallCase : FunctionCallCase() {
val functionRef = context.aliasOrValue(callableDescriptor) { val functionRef = context.aliasOrValue(callableDescriptor) {
val qualifierForFunction = context.getQualifierForDescriptor(it) val qualifierForFunction = context.getQualifierForDescriptor(it)
JsAstUtils.fqn(functionName, qualifierForFunction) // TODO: remake to call fqnWithoutSideEffects(functionName, qualifierForFunction) // TODO: remake to call
} }
val referenceToCall = val referenceToCall =
@@ -227,7 +228,7 @@ object SuperCallCase : FunctionCallCase() {
override fun FunctionCallInfo.dispatchReceiver(): JsExpression { override fun FunctionCallInfo.dispatchReceiver(): JsExpression {
// TODO: spread operator // TODO: spread operator
val prototypeClass = JsAstUtils.fqn(Namer.getPrototypeName(), calleeOwner) val prototypeClass = fqnWithoutSideEffects(Namer.getPrototypeName(), calleeOwner)
val functionRef = Namer.getFunctionCallRef(JsNameRef(functionName, prototypeClass)) val functionRef = Namer.getFunctionCallRef(JsNameRef(functionName, prototypeClass))
return JsInvocation(functionRef, argumentsInfo.argsWithReceiver(dispatchReceiver!!)) return JsInvocation(functionRef, argumentsInfo.argsWithReceiver(dispatchReceiver!!))
} }
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils;
import java.util.Arrays; import java.util.Arrays;
import static com.google.dart.compiler.backend.js.ast.JsScopesKt.JsObjectScope; import static com.google.dart.compiler.backend.js.ast.JsScopesKt.JsObjectScope;
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects;
import static org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils.getModuleName; import static org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils.getModuleName;
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getStableMangledNameForDescriptor; import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getStableMangledNameForDescriptor;
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getSuggestedName; import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getSuggestedName;
@@ -137,7 +138,7 @@ public final class Namer {
@NotNull @NotNull
public static JsNameRef superMethodNameRef(@NotNull JsName superClassJsName) { public static JsNameRef superMethodNameRef(@NotNull JsName superClassJsName) {
return JsAstUtils.fqn(SUPER_METHOD_NAME, superClassJsName.makeRef()); return fqnWithoutSideEffects(SUPER_METHOD_NAME, superClassJsName.makeRef());
} }
@NotNull @NotNull
@@ -171,7 +172,7 @@ public final class Namer {
@NotNull @NotNull
public static JsExpression getCompanionObjectAccessor(@NotNull JsExpression referenceToClass) { public static JsExpression getCompanionObjectAccessor(@NotNull JsExpression referenceToClass) {
return JsAstUtils.fqn(COMPANION_OBJECT_GETTER, referenceToClass); return fqnWithoutSideEffects(COMPANION_OBJECT_GETTER, referenceToClass);
} }
@NotNull @NotNull
@@ -186,7 +187,7 @@ public final class Namer {
@NotNull @NotNull
public static JsNameRef getRefToPrototype(@NotNull JsExpression classOrTraitExpression) { public static JsNameRef getRefToPrototype(@NotNull JsExpression classOrTraitExpression) {
return JsAstUtils.fqn(getPrototypeName(), classOrTraitExpression); return fqnWithoutSideEffects(getPrototypeName(), classOrTraitExpression);
} }
@NotNull @NotNull
@@ -211,12 +212,12 @@ public final class Namer {
@NotNull @NotNull
public static JsNameRef getFunctionCallRef(@NotNull JsExpression functionExpression) { public static JsNameRef getFunctionCallRef(@NotNull JsExpression functionExpression) {
return JsAstUtils.fqn(CALL_FUNCTION, functionExpression); return fqnWithoutSideEffects(CALL_FUNCTION, functionExpression);
} }
@NotNull @NotNull
public static JsNameRef getFunctionApplyRef(@NotNull JsExpression functionExpression) { public static JsNameRef getFunctionApplyRef(@NotNull JsExpression functionExpression) {
return JsAstUtils.fqn(APPLY_FUNCTION, functionExpression); return fqnWithoutSideEffects(APPLY_FUNCTION, functionExpression);
} }
@NotNull @NotNull
@@ -226,7 +227,7 @@ public final class Namer {
@NotNull @NotNull
public static JsNameRef getCapturedVarAccessor(@NotNull JsExpression ref) { public static JsNameRef getCapturedVarAccessor(@NotNull JsExpression ref) {
return JsAstUtils.fqn(CAPTURED_VAR_FIELD, ref); return fqnWithoutSideEffects(CAPTURED_VAR_FIELD, ref);
} }
@NotNull @NotNull
@@ -379,7 +380,7 @@ public final class Namer {
@NotNull @NotNull
public static JsNameRef kotlin(@NotNull JsName name) { public static JsNameRef kotlin(@NotNull JsName name) {
return JsAstUtils.fqn(name, kotlinObject()); return fqnWithoutSideEffects(name, kotlinObject());
} }
@NotNull @NotNull
@@ -389,7 +390,7 @@ public final class Namer {
@NotNull @NotNull
public static JsNameRef kotlinObject() { public static JsNameRef kotlinObject() {
return JsAstUtils.fqn(KOTLIN_NAME, null); return fqnWithoutSideEffects(KOTLIN_NAME, null);
} }
@NotNull @NotNull
@@ -468,11 +469,11 @@ public final class Namer {
} }
public static JsNameRef kotlinLong() { public static JsNameRef kotlinLong() {
return JsAstUtils.fqn("Long", kotlinObject()); return fqnWithoutSideEffects("Long", kotlinObject());
} }
@NotNull @NotNull
public static JsNameRef createInlineFunction() { public static JsNameRef createInlineFunction() {
return JsAstUtils.fqn(DEFINE_INLINE_FUNCTION, kotlinObject()); return fqnWithoutSideEffects(DEFINE_INLINE_FUNCTION, kotlinObject());
} }
} }
@@ -41,6 +41,7 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils;
import java.util.Map; import java.util.Map;
import static org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils.*; import static org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils.*;
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects;
import static org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils.*; import static org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils.*;
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getMangledName; import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getMangledName;
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getSuggestedName; import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getSuggestedName;
@@ -186,7 +187,7 @@ public final class StaticContext {
@NotNull @NotNull
public JsNameRef getQualifiedReference(@NotNull FqName packageFqName) { public JsNameRef getQualifiedReference(@NotNull FqName packageFqName) {
JsName packageName = getNameForPackage(packageFqName); JsName packageName = getNameForPackage(packageFqName);
return JsAstUtils.fqn(packageName, packageFqName.isRoot() ? null : getQualifierForParentPackage(packageFqName.parent())); return fqnWithoutSideEffects(packageName, packageFqName.isRoot() ? null : getQualifierForParentPackage(packageFqName.parent()));
} }
@NotNull @NotNull
@@ -215,7 +216,7 @@ public final class StaticContext {
FqName fqName = packageFqName; FqName fqName = packageFqName;
while (true) { while (true) {
JsNameRef ref = JsAstUtils.fqn(getNameForPackage(fqName), null); JsNameRef ref = fqnWithoutSideEffects(getNameForPackage(fqName), null);
if (qualifier == null) { if (qualifier == null) {
result = ref; result = ref;
@@ -471,7 +472,7 @@ public final class StaticContext {
if (!standardClasses.isStandardObject(descriptor)) { if (!standardClasses.isStandardObject(descriptor)) {
return null; return null;
} }
return namer.kotlinObject(); return Namer.kotlinObject();
} }
}; };
//TODO: review and refactor //TODO: review and refactor
@@ -514,7 +515,7 @@ public final class StaticContext {
@Override @Override
public JsExpression apply(@NotNull DeclarationDescriptor descriptor) { public JsExpression apply(@NotNull DeclarationDescriptor descriptor) {
if (isLibraryObject(descriptor)) { if (isLibraryObject(descriptor)) {
return namer.kotlinObject(); return Namer.kotlinObject();
} }
return null; return null;
} }
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.js.translate.callTranslator.CallTranslator
import org.jetbrains.kotlin.js.translate.context.DefinitionPlace import org.jetbrains.kotlin.js.translate.context.DefinitionPlace
import org.jetbrains.kotlin.js.translate.context.Namer import org.jetbrains.kotlin.js.translate.context.Namer
import org.jetbrains.kotlin.js.translate.context.TranslationContext import org.jetbrains.kotlin.js.translate.context.TranslationContext
import org.jetbrains.kotlin.js.translate.declaration.propertyTranslator.translateAccessors
import org.jetbrains.kotlin.js.translate.expression.FunctionTranslator import org.jetbrains.kotlin.js.translate.expression.FunctionTranslator
import org.jetbrains.kotlin.js.translate.expression.withCapturedParameters import org.jetbrains.kotlin.js.translate.expression.withCapturedParameters
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator import org.jetbrains.kotlin.js.translate.general.AbstractTranslator
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
import org.jetbrains.kotlin.descriptors.Modality; import org.jetbrains.kotlin.descriptors.Modality;
import org.jetbrains.kotlin.descriptors.PropertyDescriptor; import org.jetbrains.kotlin.descriptors.PropertyDescriptor;
import org.jetbrains.kotlin.js.translate.context.TranslationContext; import org.jetbrains.kotlin.js.translate.context.TranslationContext;
import org.jetbrains.kotlin.js.translate.declaration.propertyTranslator.PropertyTranslatorKt;
import org.jetbrains.kotlin.js.translate.general.Translation; import org.jetbrains.kotlin.js.translate.general.Translation;
import org.jetbrains.kotlin.js.translate.general.TranslatorVisitor; import org.jetbrains.kotlin.js.translate.general.TranslatorVisitor;
import org.jetbrains.kotlin.js.translate.initializer.ClassInitializerTranslator; import org.jetbrains.kotlin.js.translate.initializer.ClassInitializerTranslator;
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.backend.common.CodegenUtilKt
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.js.translate.context.Namer import org.jetbrains.kotlin.js.translate.context.Namer
import org.jetbrains.kotlin.js.translate.context.TranslationContext import org.jetbrains.kotlin.js.translate.context.TranslationContext
import org.jetbrains.kotlin.js.translate.declaration.propertyTranslator.addGetterAndSetter
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator import org.jetbrains.kotlin.js.translate.general.AbstractTranslator
import org.jetbrains.kotlin.js.translate.general.Translation import org.jetbrains.kotlin.js.translate.general.Translation
import org.jetbrains.kotlin.js.translate.utils.BindingUtils import org.jetbrains.kotlin.js.translate.utils.BindingUtils
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.js.translate.declaration.propertyTranslator package org.jetbrains.kotlin.js.translate.declaration
import com.google.dart.compiler.backend.js.ast.* import com.google.dart.compiler.backend.js.ast.*
import com.intellij.util.SmartList import com.intellij.util.SmartList
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.js.translate.context.Namer.getReceiverParameterName
import org.jetbrains.kotlin.js.translate.context.TranslationContext import org.jetbrains.kotlin.js.translate.context.TranslationContext
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator import org.jetbrains.kotlin.js.translate.general.AbstractTranslator
import org.jetbrains.kotlin.js.translate.general.Translation import org.jetbrains.kotlin.js.translate.general.Translation
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils.assignmentToBackingField import org.jetbrains.kotlin.js.translate.utils.TranslationUtils.assignmentToBackingField
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils.backingFieldReference import org.jetbrains.kotlin.js.translate.utils.TranslationUtils.backingFieldReference
@@ -135,8 +135,8 @@ private class PropertyTranslator(
} }
private fun generateDelegatedGetterFunction( private fun generateDelegatedGetterFunction(
getterDescriptor: PropertyGetterDescriptor, getterDescriptor: PropertyGetterDescriptor,
delegatedCall: ResolvedCall<FunctionDescriptor> delegatedCall: ResolvedCall<FunctionDescriptor>
): JsFunction { ): JsFunction {
val scope = context().getScopeForDescriptor(getterDescriptor.containingDeclaration) val scope = context().getScopeForDescriptor(getterDescriptor.containingDeclaration)
val function = JsFunction(scope, JsBlock(), accessorDescription(getterDescriptor)) val function = JsFunction(scope, JsBlock(), accessorDescription(getterDescriptor))
@@ -165,7 +165,8 @@ private class PropertyTranslator(
val fakeArgumentExpression = val fakeArgumentExpression =
(delegatedCall.valueArgumentsByIndex!![1] as ExpressionValueArgument).valueArgument!!.getArgumentExpression() (delegatedCall.valueArgumentsByIndex!![1] as ExpressionValueArgument).valueArgument!!.getArgumentExpression()
return context.innerContextWithAliasesForExpressions(mapOf( return context.innerContextWithAliasesForExpressions(mapOf(
fakeArgumentExpression to JsNew(JsAstUtils.fqn("PropertyMetadata", Namer.kotlinObject()), listOf(propertyNameLiteral)) fakeArgumentExpression to JsNew(fqnWithoutSideEffects("PropertyMetadata", Namer.kotlinObject()),
listOf(propertyNameLiteral))
)) ))
} }
@@ -43,6 +43,7 @@ import java.util.List;
import static org.jetbrains.kotlin.js.translate.utils.BindingUtils.*; import static org.jetbrains.kotlin.js.translate.utils.BindingUtils.*;
import static org.jetbrains.kotlin.js.translate.utils.FunctionBodyTranslator.setDefaultValueForArguments; import static org.jetbrains.kotlin.js.translate.utils.FunctionBodyTranslator.setDefaultValueForArguments;
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects;
import static org.jetbrains.kotlin.js.translate.utils.PsiUtils.getPrimaryConstructorParameters; import static org.jetbrains.kotlin.js.translate.utils.PsiUtils.getPrimaryConstructorParameters;
import static org.jetbrains.kotlin.resolve.DescriptorUtils.getClassDescriptorForType; import static org.jetbrains.kotlin.resolve.DescriptorUtils.getClassDescriptorForType;
@@ -127,8 +128,8 @@ public final class ClassInitializerTranslator extends AbstractTranslator {
JsName outerName = initFunction.getScope().declareName(Namer.OUTER_FIELD_NAME); JsName outerName = initFunction.getScope().declareName(Namer.OUTER_FIELD_NAME);
initFunction.getParameters().add(0, new JsParameter(outerName)); initFunction.getParameters().add(0, new JsParameter(outerName));
JsExpression paramRef = JsAstUtils.fqn(outerName, null); JsExpression paramRef = fqnWithoutSideEffects(outerName, null);
JsExpression assignment = JsAstUtils.assignment(JsAstUtils.fqn(outerName, JsLiteral.THIS), paramRef); JsExpression assignment = JsAstUtils.assignment(fqnWithoutSideEffects(outerName, JsLiteral.THIS), paramRef);
initFunction.getBody().getStatements().add(new JsExpressionStatement(assignment)); initFunction.getBody().getStatements().add(new JsExpressionStatement(assignment));
} }
@@ -165,7 +166,7 @@ public final class ClassInitializerTranslator extends AbstractTranslator {
assert superDescriptor != null : "This class is expected to have super class: " assert superDescriptor != null : "This class is expected to have super class: "
+ PsiUtilsKt.getTextWithLocation(classDeclaration); + PsiUtilsKt.getTextWithLocation(classDeclaration);
if (superDescriptor.isInner() && descriptor.isInner()) { if (superDescriptor.isInner() && descriptor.isInner()) {
arguments.add(0, JsAstUtils.fqn(Namer.OUTER_FIELD_NAME, JsLiteral.THIS)); arguments.add(0, fqnWithoutSideEffects(Namer.OUTER_FIELD_NAME, JsLiteral.THIS));
} }
addCallToSuperMethod(arguments, initializer); addCallToSuperMethod(arguments, initializer);
} }
@@ -25,6 +25,8 @@ import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
import java.util.List; import java.util.List;
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects;
public final class BuiltInFunctionIntrinsic extends FunctionIntrinsic { public final class BuiltInFunctionIntrinsic extends FunctionIntrinsic {
@NotNull @NotNull
@@ -42,6 +44,6 @@ public final class BuiltInFunctionIntrinsic extends FunctionIntrinsic {
@NotNull TranslationContext context @NotNull TranslationContext context
) { ) {
assert receiver != null; assert receiver != null;
return new JsInvocation(JsAstUtils.fqn(functionName, receiver), arguments); return new JsInvocation(fqnWithoutSideEffects(functionName, receiver), arguments);
} }
} }
@@ -24,6 +24,8 @@ import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
import java.util.List; import java.util.List;
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects;
//TODO: find should be usages //TODO: find should be usages
public final class BuiltInPropertyIntrinsic extends FunctionIntrinsic { public final class BuiltInPropertyIntrinsic extends FunctionIntrinsic {
@@ -40,6 +42,6 @@ public final class BuiltInPropertyIntrinsic extends FunctionIntrinsic {
@NotNull TranslationContext context) { @NotNull TranslationContext context) {
assert receiver != null; assert receiver != null;
assert arguments.isEmpty() : "Properties can't have arguments."; assert arguments.isEmpty() : "Properties can't have arguments.";
return JsAstUtils.fqn(propertyName, receiver); return fqnWithoutSideEffects(propertyName, receiver);
} }
} }
@@ -34,7 +34,7 @@ public class KotlinFunctionIntrinsic extends FunctionIntrinsic {
private final JsNameRef function; private final JsNameRef function;
public KotlinFunctionIntrinsic(@NotNull String functionName) { public KotlinFunctionIntrinsic(@NotNull String functionName) {
function = JsAstUtils.fqn(functionName, Namer.kotlinObject()); function = JsAstUtils.fqnWithoutSideEffects(functionName, Namer.kotlinObject());
} }
@NotNull @NotNull
@@ -212,7 +212,7 @@ public final class TopLevelFIF extends CompositeFIF {
String mangledName = getStableMangledNameForDescriptor(JsPlatform.INSTANCE.getBuiltIns().getMutableMap(), operationName()); String mangledName = getStableMangledNameForDescriptor(JsPlatform.INSTANCE.getBuiltIns().getMutableMap(), operationName());
return new JsInvocation(JsAstUtils.fqn(mangledName, thisOrReceiver), arguments); return new JsInvocation(JsAstUtils.fqnWithoutSideEffects(mangledName, thisOrReceiver), arguments);
} }
} }
@@ -32,12 +32,12 @@ import java.util.Collections;
import java.util.List; import java.util.List;
public final class JsAstUtils { public final class JsAstUtils {
private static final JsNameRef DEFINE_PROPERTY = fqn("defineProperty", null); private static final JsNameRef DEFINE_PROPERTY = fqnWithoutSideEffects("defineProperty", null);
public static final JsNameRef CREATE_OBJECT = fqn("create", null); public static final JsNameRef CREATE_OBJECT = fqnWithoutSideEffects("create", null);
private static final JsNameRef VALUE = new JsNameRef("value"); private static final JsNameRef VALUE = new JsNameRef("value");
private static final JsPropertyInitializer WRITABLE = new JsPropertyInitializer(fqn("writable", null), JsLiteral.TRUE); private static final JsPropertyInitializer WRITABLE = new JsPropertyInitializer(fqnWithoutSideEffects("writable", null), JsLiteral.TRUE);
private static final JsPropertyInitializer ENUMERABLE = new JsPropertyInitializer(fqn("enumerable", null), JsLiteral.TRUE); private static final JsPropertyInitializer ENUMERABLE = new JsPropertyInitializer(fqnWithoutSideEffects("enumerable", null), JsLiteral.TRUE);
public static final String LENDS_JS_DOC_TAG = "lends"; public static final String LENDS_JS_DOC_TAG = "lends";
@@ -128,7 +128,7 @@ public final class JsAstUtils {
@NotNull @NotNull
public static JsInvocation invokeMethod(@NotNull JsExpression thisObject, @NotNull String name, @NotNull JsExpression... arguments) { public static JsInvocation invokeMethod(@NotNull JsExpression thisObject, @NotNull String name, @NotNull JsExpression... arguments) {
return new JsInvocation(fqn(name, thisObject), arguments); return new JsInvocation(fqnWithoutSideEffects(name, thisObject), arguments);
} }
@NotNull @NotNull
@@ -173,7 +173,7 @@ public final class JsAstUtils {
@NotNull @NotNull
private static JsExpression rangeTo(@NotNull String rangeClassName, @NotNull JsExpression rangeStart, @NotNull JsExpression rangeEnd) { private static JsExpression rangeTo(@NotNull String rangeClassName, @NotNull JsExpression rangeStart, @NotNull JsExpression rangeEnd) {
JsNameRef expr = fqn(rangeClassName, Namer.kotlinObject()); JsNameRef expr = fqnWithoutSideEffects(rangeClassName, Namer.kotlinObject());
JsNew numberRangeConstructorInvocation = new JsNew(expr); JsNew numberRangeConstructorInvocation = new JsNew(expr);
setArguments(numberRangeConstructorInvocation, rangeStart, rangeEnd); setArguments(numberRangeConstructorInvocation, rangeStart, rangeEnd);
return numberRangeConstructorInvocation; return numberRangeConstructorInvocation;
@@ -488,14 +488,14 @@ public final class JsAstUtils {
} }
@NotNull @NotNull
public static JsNameRef fqn(@NotNull String identifier, @Nullable JsExpression qualifier) { public static JsNameRef fqnWithoutSideEffects(@NotNull String identifier, @Nullable JsExpression qualifier) {
JsNameRef result = new JsNameRef(identifier, qualifier); JsNameRef result = new JsNameRef(identifier, qualifier);
MetadataProperties.setSideEffects(result, false); MetadataProperties.setSideEffects(result, false);
return result; return result;
} }
@NotNull @NotNull
public static JsNameRef fqn(@NotNull JsName identifier, @Nullable JsExpression qualifier) { public static JsNameRef fqnWithoutSideEffects(@NotNull JsName identifier, @Nullable JsExpression qualifier) {
JsNameRef result = new JsNameRef(identifier, qualifier); JsNameRef result = new JsNameRef(identifier, qualifier);
MetadataProperties.setSideEffects(result, false); MetadataProperties.setSideEffects(result, false);
return result; return result;