From df8232c55579421c174288cc32d87c78c0a1965b Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Fri, 10 Oct 2014 15:14:43 +0400 Subject: [PATCH] JS backend: minor: refactor ClassTranslator --- .../declaration/ClassTranslator.java | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) 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 2b844c2c901..daa11a9ec9d 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 @@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.JetClassOrObject; import org.jetbrains.jet.lang.psi.JetObjectDeclaration; import org.jetbrains.jet.lang.psi.JetParameter; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeConstructor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; @@ -148,15 +147,7 @@ public final class ClassTranslator extends AbstractTranslator { invocationArguments.add(function); } - generateTraitMethods(properties); - - if (!DescriptorUtils.isTrait(descriptor)) { - for (DeclarationDescriptor memberDescriptor : descriptor.getDefaultType().getMemberScope().getAllDescriptors()) { - if (memberDescriptor instanceof FunctionDescriptor) { - generateBridges((FunctionDescriptor) memberDescriptor, properties); - } - } - } + generatedBridgeMethods(properties); boolean hasStaticProperties = !staticProperties.isEmpty(); if (!properties.isEmpty() || hasStaticProperties) { @@ -262,15 +253,33 @@ public final class ClassTranslator extends AbstractTranslator { return ExpressionPackage.withCapturedParameters(fun, funContext, outerClassContext, descriptor); } - private void generateBridges( - @NotNull FunctionDescriptor descriptor, - @NotNull List properties - ) { - Set> bridgesToGenerate = - BridgesPackage.generateBridgesForFunctionDescriptor(descriptor, UtilsPackage.getID()); + private void generatedBridgeMethods(@NotNull List properties) { + if (isTrait()) return; - for (Bridge bridge : bridgesToGenerate) { - generateBridge(bridge, properties); + generateBridgesToTraitImpl(properties); + + generateOtherBridges(properties); + } + + private void generateBridgesToTraitImpl(List properties) { + for(Map.Entry entry : CodegenUtil.getTraitMethods(descriptor).entrySet()) { + if (!areNamesEqual(entry.getKey(), entry.getValue())) { + properties.add(generateDelegateCall(entry.getValue(), entry.getKey(), JsLiteral.THIS, context())); + } + } + } + + private void generateOtherBridges(List properties) { + for (DeclarationDescriptor memberDescriptor : descriptor.getDefaultType().getMemberScope().getAllDescriptors()) { + if (memberDescriptor instanceof FunctionDescriptor) { + FunctionDescriptor functionDescriptor = (FunctionDescriptor) memberDescriptor; + Set> bridgesToGenerate = + BridgesPackage.generateBridgesForFunctionDescriptor(functionDescriptor, UtilsPackage.getID()); + + for (Bridge bridge : bridgesToGenerate) { + generateBridge(bridge, properties); + } + } } } @@ -289,16 +298,6 @@ public final class ClassTranslator extends AbstractTranslator { properties.add(generateDelegateCall(fromDescriptor, toDescriptor, JsLiteral.THIS, context())); } - private void generateTraitMethods(@NotNull List properties) { - if (isTrait()) return; - - for(Map.Entry entry : CodegenUtil.getTraitMethods(descriptor).entrySet()) { - if (!areNamesEqual(entry.getKey(), entry.getValue())) { - properties.add(generateDelegateCall(entry.getValue(), entry.getKey(), JsLiteral.THIS, context())); - } - } - } - private boolean areNamesEqual(@NotNull FunctionDescriptor first, @NotNull FunctionDescriptor second) { JsName firstName = context().getNameForDescriptor(first); JsName secondName = context().getNameForDescriptor(second);