diff --git a/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java b/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java index dbf7195bf64..9654fe06b27 100644 --- a/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java +++ b/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java @@ -14,7 +14,6 @@ import org.jetbrains.k2js.translate.general.AbstractTranslator; import org.jetbrains.k2js.translate.intrinsic.FunctionIntrinsic; import org.jetbrains.k2js.translate.utils.TranslationUtils; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -116,12 +115,12 @@ public final class CallTranslator extends AbstractTranslator { @NotNull private JsExpression calleeReference() { //TODO: refactor + //TODO: write tests on this cases if (descriptor instanceof VariableAsFunctionDescriptor) { VariableDescriptor variableDescriptor = ((VariableAsFunctionDescriptor) descriptor).getVariableDescriptor(); if (variableDescriptor instanceof PropertyDescriptor) { - PropertyGetterDescriptor getter = ((PropertyDescriptor) variableDescriptor).getGetter(); - assert getter != null; - return (new CallTranslator(null, new ArrayList(), getter, context())).translate(); + PropertyDescriptor propertyDescriptor = (PropertyDescriptor) variableDescriptor; + return PropertyAccessTranslator.translateAsPropertyGetterCall(propertyDescriptor, context()); } } if (context().isDeclared(descriptor)) { diff --git a/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java b/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java index 3d2c7dca458..85cfa97cd21 100644 --- a/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java +++ b/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java @@ -35,6 +35,14 @@ public final class PropertyAccessTranslator extends AccessTranslator { .translateAsGet(); } + @NotNull + public static JsExpression translateAsPropertyGetterCall(@NotNull PropertyDescriptor descriptor, + @NotNull TranslationContext context) { + return (new PropertyAccessTranslator(descriptor, context)) + .translateAsGet(); + } + + @NotNull public static PropertyAccessTranslator newInstance(@NotNull JetQualifiedExpression expression, @NotNull TranslationContext context) { @@ -115,6 +123,13 @@ public final class PropertyAccessTranslator extends AccessTranslator { this.propertyDescriptor = getPropertyDescriptor(getNotNullSelector(qualifiedExpression)); } + private PropertyAccessTranslator(@NotNull PropertyDescriptor descriptor, + @NotNull TranslationContext context) { + super(context); + this.qualifier = null; + this.propertyDescriptor = descriptor; + } + @Override @NotNull public JsExpression translateAsGet() {