Rename JsAstUtils.fqn to fqnWithoutSideEffects. Move PropertyTranslator to appropriate package
This commit is contained in:
+5
-4
@@ -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.utils.AnnotationsUtils
|
||||
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.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -60,7 +61,7 @@ object DefaultFunctionCallCase : FunctionCallCase() {
|
||||
if (isNative && hasSpreadOperator) {
|
||||
return nativeSpreadFunWithDispatchOrExtensionReceiver(argumentsInfo, functionName)
|
||||
}
|
||||
return JsInvocation(JsAstUtils.fqn(functionName, dispatchReceiver), argumentsInfo.translateArguments)
|
||||
return JsInvocation(fqnWithoutSideEffects(functionName, dispatchReceiver), argumentsInfo.translateArguments)
|
||||
}
|
||||
|
||||
fun buildDefaultCallWithoutReceiver(context: TranslationContext,
|
||||
@@ -79,7 +80,7 @@ object DefaultFunctionCallCase : FunctionCallCase() {
|
||||
|
||||
val functionRef = context.aliasOrValue(callableDescriptor) {
|
||||
val qualifierForFunction = context.getQualifierForDescriptor(it)
|
||||
JsAstUtils.fqn(functionName, qualifierForFunction)
|
||||
fqnWithoutSideEffects(functionName, qualifierForFunction)
|
||||
}
|
||||
return JsInvocation(functionRef, argumentsInfo.translateArguments)
|
||||
}
|
||||
@@ -102,7 +103,7 @@ object DefaultFunctionCallCase : FunctionCallCase() {
|
||||
|
||||
val functionRef = context.aliasOrValue(callableDescriptor) {
|
||||
val qualifierForFunction = context.getQualifierForDescriptor(it)
|
||||
JsAstUtils.fqn(functionName, qualifierForFunction) // TODO: remake to call
|
||||
fqnWithoutSideEffects(functionName, qualifierForFunction) // TODO: remake to call
|
||||
}
|
||||
|
||||
val referenceToCall =
|
||||
@@ -227,7 +228,7 @@ object SuperCallCase : FunctionCallCase() {
|
||||
|
||||
override fun FunctionCallInfo.dispatchReceiver(): JsExpression {
|
||||
// TODO: spread operator
|
||||
val prototypeClass = JsAstUtils.fqn(Namer.getPrototypeName(), calleeOwner)
|
||||
val prototypeClass = fqnWithoutSideEffects(Namer.getPrototypeName(), calleeOwner)
|
||||
val functionRef = Namer.getFunctionCallRef(JsNameRef(functionName, prototypeClass))
|
||||
return JsInvocation(functionRef, argumentsInfo.argsWithReceiver(dispatchReceiver!!))
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||
import java.util.Arrays;
|
||||
|
||||
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.ManglingUtils.getStableMangledNameForDescriptor;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getSuggestedName;
|
||||
@@ -137,7 +138,7 @@ public final class Namer {
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef superMethodNameRef(@NotNull JsName superClassJsName) {
|
||||
return JsAstUtils.fqn(SUPER_METHOD_NAME, superClassJsName.makeRef());
|
||||
return fqnWithoutSideEffects(SUPER_METHOD_NAME, superClassJsName.makeRef());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -171,7 +172,7 @@ public final class Namer {
|
||||
|
||||
@NotNull
|
||||
public static JsExpression getCompanionObjectAccessor(@NotNull JsExpression referenceToClass) {
|
||||
return JsAstUtils.fqn(COMPANION_OBJECT_GETTER, referenceToClass);
|
||||
return fqnWithoutSideEffects(COMPANION_OBJECT_GETTER, referenceToClass);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -186,7 +187,7 @@ public final class Namer {
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef getRefToPrototype(@NotNull JsExpression classOrTraitExpression) {
|
||||
return JsAstUtils.fqn(getPrototypeName(), classOrTraitExpression);
|
||||
return fqnWithoutSideEffects(getPrototypeName(), classOrTraitExpression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -211,12 +212,12 @@ public final class Namer {
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef getFunctionCallRef(@NotNull JsExpression functionExpression) {
|
||||
return JsAstUtils.fqn(CALL_FUNCTION, functionExpression);
|
||||
return fqnWithoutSideEffects(CALL_FUNCTION, functionExpression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef getFunctionApplyRef(@NotNull JsExpression functionExpression) {
|
||||
return JsAstUtils.fqn(APPLY_FUNCTION, functionExpression);
|
||||
return fqnWithoutSideEffects(APPLY_FUNCTION, functionExpression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -226,7 +227,7 @@ public final class Namer {
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef getCapturedVarAccessor(@NotNull JsExpression ref) {
|
||||
return JsAstUtils.fqn(CAPTURED_VAR_FIELD, ref);
|
||||
return fqnWithoutSideEffects(CAPTURED_VAR_FIELD, ref);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -379,7 +380,7 @@ public final class Namer {
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef kotlin(@NotNull JsName name) {
|
||||
return JsAstUtils.fqn(name, kotlinObject());
|
||||
return fqnWithoutSideEffects(name, kotlinObject());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -389,7 +390,7 @@ public final class Namer {
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef kotlinObject() {
|
||||
return JsAstUtils.fqn(KOTLIN_NAME, null);
|
||||
return fqnWithoutSideEffects(KOTLIN_NAME, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -468,11 +469,11 @@ public final class Namer {
|
||||
}
|
||||
|
||||
public static JsNameRef kotlinLong() {
|
||||
return JsAstUtils.fqn("Long", kotlinObject());
|
||||
return fqnWithoutSideEffects("Long", kotlinObject());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
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 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.ManglingUtils.getMangledName;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getSuggestedName;
|
||||
@@ -186,7 +187,7 @@ public final class StaticContext {
|
||||
@NotNull
|
||||
public JsNameRef getQualifiedReference(@NotNull FqName 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
|
||||
@@ -215,7 +216,7 @@ public final class StaticContext {
|
||||
FqName fqName = packageFqName;
|
||||
|
||||
while (true) {
|
||||
JsNameRef ref = JsAstUtils.fqn(getNameForPackage(fqName), null);
|
||||
JsNameRef ref = fqnWithoutSideEffects(getNameForPackage(fqName), null);
|
||||
|
||||
if (qualifier == null) {
|
||||
result = ref;
|
||||
@@ -471,7 +472,7 @@ public final class StaticContext {
|
||||
if (!standardClasses.isStandardObject(descriptor)) {
|
||||
return null;
|
||||
}
|
||||
return namer.kotlinObject();
|
||||
return Namer.kotlinObject();
|
||||
}
|
||||
};
|
||||
//TODO: review and refactor
|
||||
@@ -514,7 +515,7 @@ public final class StaticContext {
|
||||
@Override
|
||||
public JsExpression apply(@NotNull DeclarationDescriptor descriptor) {
|
||||
if (isLibraryObject(descriptor)) {
|
||||
return namer.kotlinObject();
|
||||
return Namer.kotlinObject();
|
||||
}
|
||||
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.Namer
|
||||
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.withCapturedParameters
|
||||
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator
|
||||
|
||||
-1
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.Modality;
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor;
|
||||
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.TranslatorVisitor;
|
||||
import org.jetbrains.kotlin.js.translate.initializer.ClassInitializerTranslator;
|
||||
|
||||
-1
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.backend.common.CodegenUtilKt
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.js.translate.context.Namer
|
||||
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.Translation
|
||||
import org.jetbrains.kotlin.js.translate.utils.BindingUtils
|
||||
|
||||
+6
-5
@@ -14,7 +14,7 @@
|
||||
* 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.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.general.AbstractTranslator
|
||||
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.TranslationUtils.assignmentToBackingField
|
||||
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils.backingFieldReference
|
||||
@@ -135,8 +135,8 @@ private class PropertyTranslator(
|
||||
}
|
||||
|
||||
private fun generateDelegatedGetterFunction(
|
||||
getterDescriptor: PropertyGetterDescriptor,
|
||||
delegatedCall: ResolvedCall<FunctionDescriptor>
|
||||
getterDescriptor: PropertyGetterDescriptor,
|
||||
delegatedCall: ResolvedCall<FunctionDescriptor>
|
||||
): JsFunction {
|
||||
val scope = context().getScopeForDescriptor(getterDescriptor.containingDeclaration)
|
||||
val function = JsFunction(scope, JsBlock(), accessorDescription(getterDescriptor))
|
||||
@@ -165,7 +165,8 @@ private class PropertyTranslator(
|
||||
val fakeArgumentExpression =
|
||||
(delegatedCall.valueArgumentsByIndex!![1] as ExpressionValueArgument).valueArgument!!.getArgumentExpression()
|
||||
return context.innerContextWithAliasesForExpressions(mapOf(
|
||||
fakeArgumentExpression to JsNew(JsAstUtils.fqn("PropertyMetadata", Namer.kotlinObject()), listOf(propertyNameLiteral))
|
||||
fakeArgumentExpression to JsNew(fqnWithoutSideEffects("PropertyMetadata", Namer.kotlinObject()),
|
||||
listOf(propertyNameLiteral))
|
||||
))
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -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.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.resolve.DescriptorUtils.getClassDescriptorForType;
|
||||
|
||||
@@ -127,8 +128,8 @@ public final class ClassInitializerTranslator extends AbstractTranslator {
|
||||
JsName outerName = initFunction.getScope().declareName(Namer.OUTER_FIELD_NAME);
|
||||
initFunction.getParameters().add(0, new JsParameter(outerName));
|
||||
|
||||
JsExpression paramRef = JsAstUtils.fqn(outerName, null);
|
||||
JsExpression assignment = JsAstUtils.assignment(JsAstUtils.fqn(outerName, JsLiteral.THIS), paramRef);
|
||||
JsExpression paramRef = fqnWithoutSideEffects(outerName, null);
|
||||
JsExpression assignment = JsAstUtils.assignment(fqnWithoutSideEffects(outerName, JsLiteral.THIS), paramRef);
|
||||
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: "
|
||||
+ PsiUtilsKt.getTextWithLocation(classDeclaration);
|
||||
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);
|
||||
}
|
||||
|
||||
+3
-1
@@ -25,6 +25,8 @@ import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects;
|
||||
|
||||
public final class BuiltInFunctionIntrinsic extends FunctionIntrinsic {
|
||||
|
||||
@NotNull
|
||||
@@ -42,6 +44,6 @@ public final class BuiltInFunctionIntrinsic extends FunctionIntrinsic {
|
||||
@NotNull TranslationContext context
|
||||
) {
|
||||
assert receiver != null;
|
||||
return new JsInvocation(JsAstUtils.fqn(functionName, receiver), arguments);
|
||||
return new JsInvocation(fqnWithoutSideEffects(functionName, receiver), arguments);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -24,6 +24,8 @@ import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideEffects;
|
||||
|
||||
//TODO: find should be usages
|
||||
public final class BuiltInPropertyIntrinsic extends FunctionIntrinsic {
|
||||
|
||||
@@ -40,6 +42,6 @@ public final class BuiltInPropertyIntrinsic extends FunctionIntrinsic {
|
||||
@NotNull TranslationContext context) {
|
||||
assert receiver != null;
|
||||
assert arguments.isEmpty() : "Properties can't have arguments.";
|
||||
return JsAstUtils.fqn(propertyName, receiver);
|
||||
return fqnWithoutSideEffects(propertyName, receiver);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ public class KotlinFunctionIntrinsic extends FunctionIntrinsic {
|
||||
private final JsNameRef function;
|
||||
|
||||
public KotlinFunctionIntrinsic(@NotNull String functionName) {
|
||||
function = JsAstUtils.fqn(functionName, Namer.kotlinObject());
|
||||
function = JsAstUtils.fqnWithoutSideEffects(functionName, Namer.kotlinObject());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+1
-1
@@ -212,7 +212,7 @@ public final class TopLevelFIF extends CompositeFIF {
|
||||
|
||||
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;
|
||||
|
||||
public final class JsAstUtils {
|
||||
private static final JsNameRef DEFINE_PROPERTY = fqn("defineProperty", null);
|
||||
public static final JsNameRef CREATE_OBJECT = fqn("create", null);
|
||||
private static final JsNameRef DEFINE_PROPERTY = fqnWithoutSideEffects("defineProperty", null);
|
||||
public static final JsNameRef CREATE_OBJECT = fqnWithoutSideEffects("create", null);
|
||||
|
||||
private static final JsNameRef VALUE = new JsNameRef("value");
|
||||
private static final JsPropertyInitializer WRITABLE = new JsPropertyInitializer(fqn("writable", null), JsLiteral.TRUE);
|
||||
private static final JsPropertyInitializer ENUMERABLE = new JsPropertyInitializer(fqn("enumerable", null), JsLiteral.TRUE);
|
||||
private static final JsPropertyInitializer WRITABLE = new JsPropertyInitializer(fqnWithoutSideEffects("writable", null), JsLiteral.TRUE);
|
||||
private static final JsPropertyInitializer ENUMERABLE = new JsPropertyInitializer(fqnWithoutSideEffects("enumerable", null), JsLiteral.TRUE);
|
||||
|
||||
public static final String LENDS_JS_DOC_TAG = "lends";
|
||||
|
||||
@@ -128,7 +128,7 @@ public final class JsAstUtils {
|
||||
|
||||
@NotNull
|
||||
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
|
||||
@@ -173,7 +173,7 @@ public final class JsAstUtils {
|
||||
|
||||
@NotNull
|
||||
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);
|
||||
setArguments(numberRangeConstructorInvocation, rangeStart, rangeEnd);
|
||||
return numberRangeConstructorInvocation;
|
||||
@@ -488,14 +488,14 @@ public final class JsAstUtils {
|
||||
}
|
||||
|
||||
@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);
|
||||
MetadataProperties.setSideEffects(result, false);
|
||||
return result;
|
||||
}
|
||||
|
||||
@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);
|
||||
MetadataProperties.setSideEffects(result, false);
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user