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.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
|
||||||
|
|||||||
-1
@@ -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;
|
||||||
|
|||||||
-1
@@ -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
|
||||||
|
|||||||
+6
-5
@@ -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))
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+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.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);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
|
|||||||
+1
-1
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user