Refactoring: inline methods and hide intermediate class

This commit is contained in:
Nikolay Krasko
2015-03-02 15:41:05 +03:00
parent 518c35fae1
commit 08502cd510
5 changed files with 20 additions and 14 deletions
@@ -204,7 +204,7 @@ trait DelegateIntrinsic<I : CallInfo> {
// Now intrinsic support only FunctionDescriptor. See DelegatePropertyAccessIntrinsic.getDescriptor()
if (descriptor is FunctionDescriptor) {
val intrinsic = context.intrinsics().getFunctionIntrinsics().getIntrinsic(descriptor)
val intrinsic = context.intrinsics().getFunctionIntrinsic(descriptor)
if (intrinsic.exists()) {
return intrinsic.apply(this, getArgs(), context)
}
@@ -17,9 +17,16 @@
package org.jetbrains.kotlin.js.translate.intrinsic;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
import org.jetbrains.kotlin.js.translate.intrinsic.functions.FunctionIntrinsics;
import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic;
import org.jetbrains.kotlin.js.translate.intrinsic.objects.ObjectIntrinsic;
import org.jetbrains.kotlin.js.translate.intrinsic.objects.ObjectIntrinsics;
import org.jetbrains.kotlin.js.translate.intrinsic.operation.BinaryOperationIntrinsic;
import org.jetbrains.kotlin.js.translate.intrinsic.operation.BinaryOperationIntrinsics;
import org.jetbrains.kotlin.psi.JetBinaryExpression;
/**
* Provides mechanism to substitute method calls /w native constructs directly.
@@ -30,17 +37,20 @@ public final class Intrinsics {
private final ObjectIntrinsics objectIntrinsics = new ObjectIntrinsics();
@NotNull
public BinaryOperationIntrinsics getBinaryOperationIntrinsics() {
return binaryOperationIntrinsics;
public BinaryOperationIntrinsic getBinaryOperationIntrinsic(
@NotNull JetBinaryExpression expression,
@NotNull TranslationContext context
) {
return binaryOperationIntrinsics.getIntrinsic(expression, context);
}
@NotNull
public FunctionIntrinsics getFunctionIntrinsics() {
return functionIntrinsics;
public FunctionIntrinsic getFunctionIntrinsic(@NotNull FunctionDescriptor descriptor) {
return functionIntrinsics.getIntrinsic(descriptor);
}
@NotNull
public ObjectIntrinsics getObjectIntrinsics() {
return objectIntrinsics;
public ObjectIntrinsic getObjectIntrinsic(@NotNull ClassDescriptor classDescriptor) {
return objectIntrinsics.getIntrinsic(classDescriptor);
}
}
@@ -155,7 +155,7 @@ public final class BinaryOperationTranslator extends AbstractTranslator {
@NotNull
private BinaryOperationIntrinsic getIntrinsicForExpression() {
return context().intrinsics().getBinaryOperationIntrinsics().getIntrinsic(expression, context());
return context().intrinsics().getBinaryOperationIntrinsic(expression, context());
}
@NotNull
@@ -67,7 +67,7 @@ public class DefaultObjectAccessTranslator extends AbstractTranslator implements
@NotNull
private static JsExpression generateReferenceToDefaultObject(@NotNull DeclarationDescriptor descriptor, @NotNull TranslationContext context) {
if (descriptor instanceof ClassDescriptor) {
ObjectIntrinsic objectIntrinsic = context.intrinsics().getObjectIntrinsics().getIntrinsic((ClassDescriptor) descriptor);
ObjectIntrinsic objectIntrinsic = context.intrinsics().getObjectIntrinsic((ClassDescriptor) descriptor);
if (objectIntrinsic.exists()) {
return objectIntrinsic.apply(context);
}
@@ -17,8 +17,6 @@
package org.jetbrains.kotlin.js.translate.utils;
import com.google.dart.compiler.backend.js.ast.*;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.Function;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
@@ -30,7 +28,6 @@ import org.jetbrains.kotlin.js.translate.general.Translation;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.types.JetType;
import org.jetbrains.kotlin.types.TypeProjection;
import java.util.ArrayList;
import java.util.Collections;
@@ -42,7 +39,6 @@ import static org.jetbrains.kotlin.js.translate.utils.BindingUtils.getCallableDe
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.assignment;
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.createDataDescriptor;
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getMangledName;
import static org.jetbrains.kotlin.resolve.DescriptorUtils.getFqName;
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isAnonymousObject;
public final class TranslationUtils {
@@ -222,7 +218,7 @@ public final class TranslationUtils {
if (returnType != null &&
KotlinBuiltIns.getInstance().getCharType().equals(returnType) || (KotlinBuiltIns.getInstance().getLongType().equals(returnType))) return false;
if (context.intrinsics().getFunctionIntrinsics().getIntrinsic((FunctionDescriptor) operationDescriptor).exists()) return true;
if (context.intrinsics().getFunctionIntrinsic((FunctionDescriptor) operationDescriptor).exists()) return true;
return false;
}