JS backend: add generateTraitMethods into ClassTranslator
This commit is contained in:
@@ -19,6 +19,7 @@ package org.jetbrains.k2js.translate.declaration;
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.intellij.util.SmartList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.backend.common.CodegenUtil;
|
||||
import org.jetbrains.jet.codegen.bridges.Bridge;
|
||||
import org.jetbrains.jet.codegen.bridges.BridgesPackage;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
@@ -147,6 +148,8 @@ 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) {
|
||||
@@ -286,6 +289,16 @@ public final class ClassTranslator extends AbstractTranslator {
|
||||
properties.add(generateDelegateCall(fromDescriptor, toDescriptor, JsLiteral.THIS, context()));
|
||||
}
|
||||
|
||||
private void generateTraitMethods(@NotNull List<JsPropertyInitializer> properties) {
|
||||
if (isTrait()) return;
|
||||
|
||||
for(Map.Entry<FunctionDescriptor, FunctionDescriptor> 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);
|
||||
|
||||
Reference in New Issue
Block a user